举个例子:
private int[] list;
public Listing() {
// Why can't I do this?
list = {4, 5, 6, 7, 8};
// I have to do this:
int[] contents = {4, 5, 6, 7, 8};
list = contents;
}
为什么我不能使用速记初始化?我能想到解决这个问题的唯一方法是制作另一个数组并设置list
为该数组。
举个例子:
private int[] list;
public Listing() {
// Why can't I do this?
list = {4, 5, 6, 7, 8};
// I have to do this:
int[] contents = {4, 5, 6, 7, 8};
list = contents;
}
为什么我不能使用速记初始化?我能想到解决这个问题的唯一方法是制作另一个数组并设置list
为该数组。
当您在定义行定义数组时,它假定它知道类型是什么,因此new int[]
是多余的。但是,当您使用赋值时,它不会假定它知道数组的类型,因此您已经指定了它。
当然,其他语言对此没有问题,但在 Java 中,不同之处在于您是否在同一行上定义和初始化字段/变量。
试试list = new int[]{4, 5, 6, 7, 8};
。
除了使用new Object[]{blah, blah....}
Here 是一种稍微短一些的方法来做你想做的事。使用下面的方法。
public static Object [] args(Object... vararg) {
Object[] array = new Object[vararg.length];
for (int i = 0; i < vararg.length; i++) {
array[i] = vararg[i];
}
return array;
}
PS - Java 很好,但在这种情况下它很糟糕。如果可能且合理,请为您的项目尝试 ruby 或 python。(看java 8 仍然没有填充 hashmap 的简写,而且他们花了很长时间才进行小改动以提高开发人员的工作效率)