我刚看了这个SO Post:
但是,Columbia professor's notes按照以下方式执行。见第9页。
Foo foos = new Foo[12] ;
哪种方式正确?他们似乎说不同的事情。
特别是,在备注版本中没有[]
。
答案 0 :(得分:7)
这根本不会用Java编译(因为你要将数组类型的值赋给非数组类型Foo
的变量):
Foo foos = new Foo[12];
被javac
拒绝并出现以下错误(另请参阅:http://ideone.com/0jh9YE):
test.java:5: error: incompatible types
Foo foos = new Foo[12];
要进行编译,请将foo
声明为类型Foo[]
,然后循环遍历它:
Foo[] foo = new Foo[12]; # <<<<<<<<<
for (int i = 0; i < 12; i += 1) {
foos[i] = new Foo();
}
答案 1 :(得分:1)
Foo[] foos = new Foo[12] ; //declaring array
for(int i=0;i<12;i++){
foos[i] = new Foo(); //initializing the array with foo object
}
答案 2 :(得分:1)
你不能这样做
Foo foos = new Foo[12] ;
更改为
Foo[] foos = new Foo[12];
第9页的文档中有拼写错误。第10页也有拼写错误
int[] grades = new int[3]
如果拼写错误出现在每页上,我都不会阅读整篇文档。
答案 3 :(得分:0)
以这种方式宣告。
Foo[] foos = new Foo[12];
答案 4 :(得分:0)
//declaring array of 12 Foo elements in Java8 style
Foo[] foos = Stream.generate(Foo::new).limit(12).toArray(Foo[]::new);
// instead of
Foo[] foos = new Foo[12];
for(int i=0;i<12;i++){
foos[i] = new Foo();
}