繁体   English   中英

嵌套Java内部类

[英]Nesting Java Inner Classes

如果C类嵌套在B类中,而B类又嵌套在A类中,该如何实例化呢?

class A {
    class B {
        class C {
            ..............
        }
    }
}

要实例化C ,您将需要B的封闭实例,而后者又需要A的封闭实例。

A someA = new A();
B someB = a.new B();
C someC = b.new C();

这样的事情应该做

A.B.C c = new A().new B().new C();

如果需要,可以串联new()行。

您可以像这样实例化。

A a = new A();
A.B b = a.new B();
A.B.C c = b.new C();

这有效..

public class InnerClassTest1 {
    public static void main(String[] args) {
        A a = new A();
        A.B b = a.new B();
        A.B.C c = b.new C();
        c.setValue(100);
        System.out.println("Innermost value " + c.getValue());
    }
}
class A {
    class B {
        class C {
            int value;

            public int getValue() {
                return value;
            }

            public void setValue(int value) {
                this.value = value;
            }

        }
    }
}

如果类在功能上不依赖于嵌套,即class C不引用class Bclass A方法和/或字段,则可以使内部类静态。

class A {
    static class B {
        static class C {
            ...
        }
    }
}

然后,您可以从任意位置创建它们:

A.B.C c = new A.B.C ();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM