我有一个类似于“Defining inner class outside java file”的问题。 但那个提问者,只是想通过让课程全部放在一个包中来做一些可能的事情。
与他类似,我想将一些类定义为外部对象的内部对象;但我想访问该对象的动态字段。为了避免拥挤的类,我想在其他一些“innerClasses.java”中定义它们。使用“extend”只能让我能够使用它的静态字段。但是,我想像内部对象一样访问动态字段。
作为一个简短的例子(但实际上一个很好的例子会有问题)我想在类“OuterClass.java”中使用这个类
public class OuterClass{
double nonStaticField
}
其他类中的每个类
public class InnerClass1OfOuterClass{
...
}
public class InnerClass2OfOuterClass{
...
}
public class InnerClass3OfOuterClass{
...
}
public class InnerClass4OfOuterClass{
...
}
....
答案 0 :(得分:1)
“自然”方式将是另一种方式:让内部类扩展一些包含主要代码的抽象类:
class Outer {
class Inner extends InnerBase<Outer> {
... little code
}
}
class InnerBase<T> {
protected int eger;
... most code
}
然后也委托给另一个班级。
现在,如果您仍想扩展内部:
class InnerBase<T> {
protected int eger;
... most code
}
class Sinner extends Outer.Inner {
}
Outer outer = new Outer();
Inner sinner = outer.new Sinner();
出于实际目的,您可以在外部
中创建protected Inner createInner() { return new Inner(); }
并扩展Outer,覆盖工厂方法createInner。
这段代码设计可能有点间接,因此我的“自然”在开头。