抱歉标题不好,但我想不出更好的一个.
我有一个A类和一个B类,它是A的一个子类,就像这样:
(它实际上是否有正确的名称?是否为继承保留"子类"?)
class A { int i = 0; class B { int j = 1; } } class Test { public static void main() { A a = new A(); B b = a.new B(); A c = ??? b ??? // get "a" back } }
从B可以访问A的每个属性,因此ai和bi都返回0.现在,我想知道是否有可能从b中检索A类型的原始对象,因为b包含a包含的所有内容?简单的铸造显然不能解决问题.
第二个:
class A { void print() { System.out.println("This is class A."); } class B { void print() { // <--- How to access print() of class A (like this.A.print() or smth)? System.out.println("This is class B."); } } }
你也可以在这个主题上为我提供一些很好的资源,因为到目前为止我找到一个好的资源太愚蠢了.
提前致谢.:)
似乎没有办法从外部访问外部类.但你可以这样做:
class A { int i = 0; class B { final A outer = A.this; int j = 1; } } class Test { public static void main() { A a = new A(); A.B b = a.new B(); A c = b.outer // get "a" back } }
ClassName.this
将是与内部类的实例关联的外部类的实例.
您可以使用ParentClass.this
内部类中的语法访问它.
例如
public class Outter { class Inner { public Outter getOutter() { return Outter.this; } } public Inner getInner(){ return new Inner(); } } class Runner{ public static void main(String[] args){ Outter out = new Outter(); Outter.Inner inner = out.getInner(); System.out.println(inner.getOutter().toString()); } }