关于Java内部类的两个问题(类A {类B {}})

舞会:

对不起,这个头衔不好,但我想不出更好的头衔。

我有一个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.");
        }
    }
}

或者,您也可以在这个主题上为我提供一些很好的资源,因为到目前为止我一直都太愚蠢而找不到一个好的资源。

提前致谢。:)

Johannes Schaub-小伙子:

似乎没有办法从外部访问外部类。但是您可以这样做:

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 将是与内部类的实例相关联的外部类的实例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章