有没有办法在Java中定义独立的内部类?
注意:我不需要在C#中使用“部分”类,我需要完整的类,但需要内部。
有没有计划在未来的Javas中引入这样的语法?
package tests.java;
public class Try_InnerClassStandalone_01 {
public static void main(String[] args) {
Outer O1 = new Outer(12);
Outer O2 = new Outer(13);
Outer.Inner i1 = O1.new Inner();
System.out.println(i1.getData());
InnerExt i2 = O1.new InnerExt();
System.out.println(i2.getData());
}
}
class Outer {
class Inner {
int getData() {
return data;
}
}
public int data;
public Outer(int data) {
this.data = data;
}
}
class InnerExt extends Outer.Inner {
}
更新
我知道静态和非静态内部类之间的区别。我想利用这些优势并避免不利之处。
优点是能够隐式引用Outer.this
(更短的代码)。
缺点是必须将内部类放入外部类定义的边界(没有模块化)。
答案 0 :(得分:1)
试试这个:
class Outer {
static class Inner {
// ...
}
}
非静态内部类的实例具有对其封闭类的实例的隐式引用。如果你想要我怀疑你对“独立内部阶级”的意思,你应该建立内部阶级static
。
答案 1 :(得分:1)
你不能这样做
class InnerExt extends Outer.Inner {
}
因为Inner
仅与Outer
实例的上下文相关。您无法在Outer
的上下文之外扩展它。就像你可以做的那样
class Outer {
class Inner {
}
class InnerExt extends Inner {
}
}
否则您需要Inner
static
课程。然后,您可以在其可见性范围内扩展它。