List<Object[]> d = new ArrayList<Object[]>();
d.add({"A"});//compile error
Object [] arr = {"A"};//valid
我一直认为最后两行是同样的操作,并受到类似规则的约束。
谁能解释一下?
答案 0 :(得分:2)
这不是要将参数传递给方法。初始化数组时,您只能使用{x}
简写,例如有效示例。其他任何地方都无效。如果您需要在初始化后稍后实例化数组,则需要使用new int[]
。
int[] a = {1,2}; // OK
int[] b;
b = {1,2}; // compiler error
答案 1 :(得分:1)
我一直认为最后两行是同样的操作,并受到类似规则的约束。
你错了。
谁能解释一下?
我无法解释为什么你错了,但我可以解释一下语法。最后一行是有效的,因为它是初始化,并且初始化具有特殊语法。如果您将其拆分为声明和赋值,则在第二行中的赋值中会出现相同的错误。 Java中不存在值的语法。
答案 2 :(得分:0)
您不能将数组初始值设定项用作参数。
答案 3 :(得分:0)
在第一种情况下
d.add({"A"});//compile error
您需要创建一个Object []的新实例作为方法参数,如下所示:
d.add(new Object[]{"A"});
在第二种情况下,您将创建一个Object数组。你也可以做类似的事情:
Object [] arr = new Object[] {"A"};
Java允许您执行以下操作,因为我认为它在原始设计中与C / C ++数组定义保持一定的兼容性。
Object [] arr = {"A"};//valid