这两个阵列的形式是否相同? (他们似乎在接受测试时。)如果是,那为什么他们都被允许?一个纯粹是为了向后兼容吗?哪种是最佳做法?
public static void main(String[] args)
{
Auto[] array0 = new Auto[] { new Auto(6, "Lemons"),
new Auto(4, "Rusty")
};
Auto[] array1 = { new Auto(5, "German"),
new Auto(8, "Detroit")
};
}
答案 0 :(得分:3)
后者只能用于在声明数组时初始化数组。
例如,假设您有以下方法:
public void foo(Auto[] autos) {
}
在这种情况下,您可以foo( new Auto[] { new Auto(6, "Lemons") })
,但不 foo( { new Auto(6, "Lemons") })
。
答案 1 :(得分:1)
它们是等价的。
但是,第二种语法只能在初始化变量时使用(编译器可以推断出类型)。因此,第一种语法对于您想要创建临时的情况很有用,例如:
void foo(Auto[] stuff) {
...
}
foo(new Auto[] { new Auto(6, "Lemons"), new Auto(4, "Rusty") });