我正在学习嵌套类和内部类,这使我开始思考是否有可能将内部类扩展为嵌套类。例如。

public class Outer{

    public class Inner{
        // notice the lack of static keyword
    }
}


public class ExtendedOuter extends Outer{

    public static class ExtendedInner extends Inner{
        // notice the static keyword
    }
}

我确实尝试过编译上面的代码,但不能,但是我收到的编译时错误使我相信可能会有解决方法。但是,我可以将嵌套类扩展为内部类。

这是我收到的编译时错误。

最佳答案

实际上,您可以扩展内部类。您只需要提供该类将绑定(bind)到的Outer实例即可。为此,您必须使用实例显式调用super构造函数。

public class Outer {
    public class Inner{
        // notice the lack of static keyword
    }
}

public class ExtendedOuter extends Outer {

    private static Outer outer = new ExtendedOuter(); // or any other instance

    public static class ExtendedInner extends Inner {
        public ExtendedInner() {
            outer.super(); // this call is explicitly required
        }
    }

}

如果您有一个嵌套类,该嵌套类从另一个封闭类扩展了另一个嵌套类,则此方法也适用。

关于java - 将内部类扩展为嵌套类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20316675/

10-13 05:19