这就是我尝试这样做的方式:
interface a{}
class b implements a{
a[] array;
new b(){
array={ new aImplementer(), new aImplementer(), new aImplementer()};
}
}
为什么我不能这样做?我只是做错了吗?现在,我得到的错误是{array of {=
的部分错误的表达式错误开始答案 0 :(得分:8)
您的语法已关闭。我相信你想要这样的东西(最终版本 - 这次实际测试过 - 然后在我的更改被覆盖后重做。)
interface A{}
class AImplementer implements A{};
class B {
A[] array;
B(){
array=new A[]{ new AImplementer(), new AImplementer(), new AImplementer()};
}
}
在那里,保证编译或两次退款:)
还免费提供“课程应以大写字母开头”。
答案 1 :(得分:1)
您只能在声明变量时将数组分配给数组文字(我不确定您称之为这些野兽)。所以这可能没问题
// array literal assigned at variable declaration
a[] array = { new aImplementer(), new aImplementer(), new aImplementer()};
new b(){
}
但是你首先声明它然后在另一个地方分配它的地方是不行的。为什么?我不确定除了它在JLS中是怎么回事。
编辑:更新已编译/测试的代码:
interface A {
}
class AImplementer implements A {
};
class B {
A[] array = {new AImplementer(), new AImplementer(), new AImplementer()};
B() {
}
}