小编Mr.*_*irl的帖子

我可以使这个java pluck()方法更安全吗?

我写了这个实用功能:

public static <T> List<T> pluck(String fieldName, List list) 
        throws NoSuchFieldException, IllegalAccessException {
    if (list.isEmpty()) {
        return new ArrayList<T>();
    }
    Class c = list.get(0).getClass();
    Field f = c.getField(fieldName);
    ArrayList<T> result = Lists.newArrayList();
    for (Object object : list) {
        result.add((T) f.get(object));
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我从underscore.js复制了这个想法.用例是:

ArrayList<Person> people = new ArrayList<Person>;
people.add(new Person("Alice", "Applebee"));
people.add(new Person("Bob", "Bedmington"));
people.add(new Person("Charlie", "Chang"));

List<String> firstNames = pluck("firstName", people);
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果调用者输入的类型错误,则在调用者尝试从列表中获取对象之前不会抛出任何异常.理想情况下,我想ClassCastExceptionpluck方法本身抛出一个.但是,我没有看到在运行时访问列表类型的方法.

有没有一些技巧我可以用来确保调用者没有一个无效的列表?


编辑:所以使用我得到的反馈,一个安全的实现将是:

public static <T,F> List<F> pluck(String fieldName, …
Run Code Online (Sandbox Code Playgroud)

java generics reflection

6
推荐指数
1
解决办法
2820
查看次数

ExtJs4中的单身人士

我想在Ext JS 4中创建一个单例对象.

这是我的代码:

Ext.define('AM.model.Test', {
    extend : 'Ext.util.Observable',
    singleton : true,
    foo : function() {
        console.log('log 1');
    },
    constructor : function() {

    }
});
Run Code Online (Sandbox Code Playgroud)

我叫它:

AM.model.Test.foo();
Run Code Online (Sandbox Code Playgroud)

只要我在app.js中定义define,一切正常.当我尝试将此定义移动到'app\model\Test.js'时,我收到此错误:

AM.model.Test is undefined [Break On This Error]
AM.model.Test.foo();

我的代码出了什么问题?

singleton extjs extjs4

6
推荐指数
1
解决办法
1万
查看次数

(jQuery)单击cookie保存复选框状态

关于这个功能有很多主题,但我似乎无法让它发挥作用.我已经搜索了这个特定的案例,并且有一些链接让我在这里,但是绰绰有神,我似乎无法让他们工作.我唯一能做到的就是以下内容:http: //dl.dropbox.com/u/2238080/a/!old/z.htm, 但正如你所看到的,它不存储盒子的状态是选中.

问候,鲁本

html javascript forms jquery jquery-cookie

6
推荐指数
1
解决办法
2万
查看次数

使用本地文件夹中的Javascript读取XML文件

我正在尝试学习如何读取XML文件中的网页数据.这是一个静态HTML页面.我不想要一个Web服务器,我不能使用Ajax.XML文件是本地的(与HTML文件位于同一目录中).我希望这能在Chrome浏览器中运行.

我需要做的是:

  1. 阅读onLoad事件页面上的XML文件.
  2. 使用innerHTML将XML数据插入div.

我的问题是阅读XML文件.我发现我发现的所有示例只有在运行Web服务器时才有效,我必须避免.

javascript xml

6
推荐指数
1
解决办法
3万
查看次数

Ace编辑器上的Keydown事件

在这个惊人的编辑器(Ace:代码编辑器)上,有一种方法我可以得到这个on change事件,是否有on keydown事件?或者我可以模拟它的黑客攻击?

javascript ace-editor

6
推荐指数
1
解决办法
2981
查看次数

将 CSV 文件从浏览器发送到 nodejs 服务器

我正在尝试将用户上传的 csv 文件从浏览器发送到 nodejs 服务器进行处理(文件超过 50 mb,因此页面变得无响应)。为此,我正在使用 XMLHttpRequest。我找不到解决方案。任何帮助表示赞赏。

Javascript代码

 var csv = document.getElementById('inputFile').files[0];
 var request = new XMLHttpRequest();
 request.open("POST", "/handleFile", true);
 request.setRequestHeader("Content-type", "text/csv");
 request.onreadystatechange = function() {
   if (request.readyState === XMLHttpRequest.DONE && request.status === 200) {
     console.log("yey");
   }
 }

 request.send(csv);
Run Code Online (Sandbox Code Playgroud)

节点服务器

 var express = require('express')
 var app = express()
 var bodyparser = require('body-parser')

 app.post('/handleFile', function(req, res) {
   console.log(req.body); // getting {} empty object here....
   console.log(req);

   var csv = req.body;
   var lines = csv.split("\n");
   var result = [];
   var headers = …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

6
推荐指数
1
解决办法
1万
查看次数

使用RegExp屏蔽字符串的一部分

我正在尝试使用JavaScript屏蔽字符串的一部分。

例如使用正则表达式掩盖信用卡号码的第二和第三部分:

  • 4567 6365 7987 37834567 **** **** 3783
  • 3457 732837 823723457 ****** 82372

我只想保留前4个数字和后5个字符。

这是我的第一次尝试: /(?!^.*)[^a-zA-Z\s](?=.{5})/g

https://regex101.com/r/ZBi54c/2

javascript regex credit-card mask

6
推荐指数
1
解决办法
5924
查看次数

在javascript中将一个对象添加到另一个对象

我有 2 个对象,我需要将一个对象添加到另一个对象。

var loc = {
  leftArray: [],
  topArray: [],
  bottomArray: [],
  rightArray: []
}

var obj = {
  id: "ce",
  icon: "logo/image.png",
  name: "CE",
  type: "type2",
  version: 3.4
}
Run Code Online (Sandbox Code Playgroud)
var obj = {
  id: "ce",
  icon: "logo/image.png",
  name: "CE",
  type: "type2",
  version: 3.4,
  leftArray: [],
  topArray: [],
  bottomArray: [],
  rightArray: []
}
Run Code Online (Sandbox Code Playgroud)

有什么简单的方法可以做到这一点吗?

javascript angularjs

6
推荐指数
1
解决办法
6595
查看次数

CSS 变换偏移量随文本长度而变化

我已经建立了一个演示,它有 5 个浮动的<div>s 和不同长度的旋转文本。我想知道是否有一种方法可以让 CSS 类处理所有文本的居中,而不管长度如何。目前,我必须为样式表中的每个字符长度创建一个类。这可能会变得太混乱。我还注意到,如果我增加或减少包装的尺寸,偏移量就会被搞砸<div>

我将通过 jQuery 将这些类添加到 div,但我仍然必须设置每个类以实现跨浏览器兼容性。

.transform3 {
    -webkit-transform-origin: 65% 100%;
    -moz-transform-origin: 65% 100%;
    -ms-transform-origin: 65% 100%;
    -o-transform-origin: 65% 100%;
    transform-origin: 65% 100%;    
}
.transform4 {
    -webkit-transform-origin: 70% 110%;
    -moz-transform-origin: 70% 110%;
    -ms-transform-origin: 70% 110%;
    -o-transform-origin: 70% 110%;
    transform-origin: 70% 110%;
}
.transform5 {
    -webkit-transform-origin: 80% 120%;
    -moz-transform-origin: 80% 120%;
    -ms-transform-origin: 80% 120%;
    -o-transform-origin: 80% 120%;
    transform-origin: 80% 120%;
}
.transform6 {
    -webkit-transform-origin: 85% 136%;
    -moz-transform-origin: 85% 136%;
    -ms-transform-origin: 85% …
Run Code Online (Sandbox Code Playgroud)

html javascript css jquery transform

5
推荐指数
1
解决办法
1196
查看次数

等待线程是否重新访问synchronized方法中的代码

我正在阅读教程中的线程同步和等待/通知构造.它说明了这一点

当调用wait时,线程释放锁并暂停执行.在将来的某个时间,另一个线程将获取相同的锁并调用Object.notifyAll,通知等待该锁的所有线程发生了重要的事情.

在第二个线程释放锁之后的一段时间,第一个线程重新获取锁并通过从等待调用返回来恢复.

AFAIK,如果有多个线程可以在第一个线程被唤醒时竞争锁定,那么notify它们中的任何一个都可以拥有该对象的锁定.我的问题是,如果第一个线程本身重新获取锁,它是否必须从synchronized方法的开头全部开始(这意味着它再次在while循环检查wait()条件之前执行代码)或者它只是暂停wait()在线?

// Does the waiting thread come back here while trying to own the
// lock (competing with others)?
public synchronized notifyJoy() {
    // Some code  => Does this piece of code gets executed again then in case
    // waiting thread restarts its execution from the method after it is notified?
    while (!joy) {
        try {
            // Does the waiting thread stay here while trying to re-acquire
            // the lock?
            wait(); …
Run Code Online (Sandbox Code Playgroud)

java multithreading wait

5
推荐指数
1
解决办法
1862
查看次数