Java中嵌套类的列表?
有没有办法列出嵌套类对象 我这样定义了嵌套类:Java中嵌套类的列表?,java,list,nested,Java,List,Nested,有没有办法列出嵌套类对象 我这样定义了嵌套类: public class AB{ public class A { } public class B { } List<AB> listAB = new ArrayList<>(); AB.A objectA = AB.new A(); AB.B objectB = AB.new B(); listAB.add(objectA); listAB.add(objectB); 我想列这样的清
public class AB{
public class A { }
public class B { }
List<AB> listAB = new ArrayList<>();
AB.A objectA = AB.new A();
AB.B objectB = AB.new B();
listAB.add(objectA);
listAB.add(objectB);
我想列这样的清单:
public class AB{
public class A { }
public class B { }
List<AB> listAB = new ArrayList<>();
AB.A objectA = AB.new A();
AB.B objectB = AB.new B();
listAB.add(objectA);
listAB.add(objectB);
List listAB=new ArrayList();
AB.A objectA=AB.new A();
AB.B objectB=AB.new B();
添加(objectA);
添加(objectB);
谢谢大家! 将A和B作为AB的子类,并且A和B都应该是静态类
public class AB{
public static class A extends AB { }
public static class B extends AB{ }
}
那么您的列表将起作用:
List<AB> listAB = new ArrayList<AB>();
AB.A objectA = AB.new A();
AB.B objectB = AB.new B();
listAB.add(objectA);
listAB.add(objectB);
List listAB=new ArrayList();
AB.A objectA=AB.new A();
AB.B objectB=AB.new B();
添加(objectA);
添加(objectB);
该语法不起作用。A
和B
都与AB
不相关(也就是说,它们不能被指定来代替AB
),即使它们是嵌套的
此外,如果声明不是静态的
,您将无法访问封闭类之外的那些类
你应该做的是:
- 将类声明更改为以下内容:
…然后,我们看到public static class A extends AB { } public static class B extends AB { }
和A
都与B
相关(也就是说,它们可以被分配来代替AB
)AB
- 更正
和AB.A
的实例化调用:AB.B
AB.A objectA = new AB.A(); AB.B objectB = new AB.B();
然后,您可以毫无困难地添加到列表中。我确实尝试过,但没有效果。我在询问其他可能性。嵌套类不是其容器的隐式子类型。但是子类型很糟糕,请使用接口:)不,因为它们是不同的类,如果您将
A
和B
子类设置为AB
我忘了将A和B类设置为静态的,那么子类型将起作用。刚刚修改了我的代码@马科托耶斯。因为这不是实例化这些对象的方式。谢谢!“static”解决了我这个$0字段的问题-我使用AB.A.class.getDeclaredField()获取嵌套类的所有字段,但我也得到了“this$0”,这给我带来了麻烦。