Java:如何从内部类中获得直接父级(谁不是顶级类)?

时间:2013-05-03 00:49:36

标签: java inner-classes

我意识到Java中静态嵌套类和内部类之间的区别。 我在谈论内心阶级。 我也知道我们可以使用" OuterClass.this"从内部类中获取外部类。

与目录一样,有两种导航方式:绝对方式和相对方式。 例如:" / aaa / bbb / ccc / ddd",如果我在文件夹" ccc"并且想要参考" bbb",我们可以:" cd / aaa / bbb"或者" cd .."。

现在来到Java内部类。

class AAA{
    BBB b = new BBB();
    class BBB{
        CCC c = new CCC();
        //CCC c = new CCC(b);
        class CCC{
            //SECOND VERSION
            //BBB parent = null
            //CCC(BBB parent_){
            //    parent = parent_;
            //}
            DDD d = new DDD();
            BBB GetParent(){
                return AAA.this.b;    //I know this will work
                //or return parent; if using the SECOND VERSION
            }
            class DDD{
            }    
        }
    }
}

我提供了两个版本: AAA.this.b 和 引入一个成员变量" parent",用构造函数的参数赋值。

我的问题: 如果我不引入成员变量,我可以使用相对的方式从内部类中获取其直接父级吗? (比如cd ..)

2 个答案:

答案 0 :(得分:2)

您可以使用BBB.this直接引用BBB类的封闭实例。

答案 1 :(得分:0)

虽然通常内部类代码不需要引用 外部类,因为它已经有一个用于访问成员的隐式类 对于外部类,如果需要传递外部类,则需要引用外部类 参考其他一些代码。如果那就是你想要的,只需使用第一个版本。