我有一个 Super 类和几个子类 Sub1、Sub2、...
有没有办法实例化共享同一个超级实例的对象 sub1、sub2?
这种情况来自这样的内部嵌套类配置:
Super{
superFields...
Sub1{...}
Sub2{...}
........
}
但是内部文件已经增长太多了,我会觉得将它们放在单独的文件中会更舒服。他们需要共享同一个 superFields 实例,所以我的问题。
我有一个 Super 类和几个子类 Sub1、Sub2、...
有没有办法实例化共享同一个超级实例的对象 sub1、sub2?
这种情况来自这样的内部嵌套类配置:
Super{
superFields...
Sub1{...}
Sub2{...}
........
}
但是内部文件已经增长太多了,我会觉得将它们放在单独的文件中会更舒服。他们需要共享同一个 superFields 实例,所以我的问题。
您可以轻松地拆分您的内部类,并让它们中的每一个都引用当前包含类的一个实例。当你构造你的新类时,你可以将同一个实例传递给两者,然后新类可以使用访问器来获取包含类的字段。
class Super {
String fieldA;
int fieldB;
...
}
在您的新文件中,如下所示:
class Sub1{
Super myOldContainingClass;
Sub1(Super myOldContainingClass) {
this.myOldContainingClass = myOldContainingClass;
}
void myMethod() {
System.out.println(myOldContainingClass.getFieldA());
System.out.println(myOldContainingClass.getFieldB());
}
}
内部类是通过将超类作为其所有构造函数的参数来实现的。
所以这也是你可以做的:
public class Sub1 {
private Superclass superclass;
public Sub1(Superclass superclass) {
this.superclass = superclass;
}
}
并且每当您想从超类中实例化子类时:
Sub1 sub = new Sub1(this);