请记住,new Object() {...} 给你的是一个值而不是一个类型。
所以,下面是创建匿名类实例数组的方法:
final Object[] anonArray = new Object[]{
new Object(){
public String foo = "bar1";
},
new Object(){
public String foo = "bar2";
},
new Object(){
public String foo = "bar3";
},
new Object(){
public String foo = "bar4";
}
};
或者如果你想要一个具有相同匿名类实例 4 次的数组:
final Object anonInstance = new Object(){
public String foo = "bar1";
};
final Object[] anonArray = new Object[]{
anonInstance, anonInstance, anonInstance, anonInstance
};
或者,如果您想要同一个匿名类的 4 个不同实例:
final Object[] anonArray = new Object[4];
for (int i = 0; i < anonArray.length; i++) {
// Just to show we can do this ....
final String bar = "bar" + 1;
anonArray[i] = new Object(){
public String foo = bar; // Look!
};
}
请注意,在上述所有内容中,数组类型都是Object[] 而不是“Object 的匿名子类的数组”。很难想象这会很重要,但如果确实很重要,您将需要借助反射来创建数组类。 (参见@ernest_k 的answer。)
或者只是声明一个适当的自定义类或接口的数组,并从该类/接口创建匿名子类。 Object 的匿名子类并不完全实用......