如何创建一个在java中实现公共接口的新对象数组

时间:2011-05-15 02:02:58

标签: java arrays

这就是我尝试这样做的方式:

interface a{} 
class b implements a{
    a[] array; 
    new b(){
        array={ new aImplementer(), new aImplementer(), new aImplementer()}; 
    } 
} 

为什么我不能这样做?我只是做错了吗?现在,我得到的错误是{array of {=

的部分错误的表达式错误开始

2 个答案:

答案 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() {

   }
}