【问题标题】:Java access static nested class [duplicate]Java访问静态嵌套类[重复]
【发布时间】:2017-11-12 09:36:46
【问题描述】:

如何创建以下类的实例并访问其方法。 示例:

public class A {
    public static class B {
        public static class C {
            public static class D {
                public static class E {
                    public void methodA() {}
                    public void methodB(){}
                }
            }
        }
    }
}

【问题讨论】:

  • A.B.C.D.E e = new A.B.C.D.E(); 不确定“如何”是什么意思。
  • 仅供参考: 在另一个类中声明的类称为 嵌套 类。如果它是非静态的,它也被称为 inner 类。由于您的类是static,它们通常被称为静态嵌套类。它们绝对不是 inner 类。 JLS §8.1.3. Inner Classes and Enclosing Instances内部类是没有显式或隐式声明的嵌套类static
  • OP,您在 Java 文档中查找过这个吗? JLS 回答了这个问题。仅供参考,诸如 Java 语言之类的文档非常有用。

标签: java inner-classes


【解决方案1】:

你可以使用:

A.B.C.D.E e = new A.B.C.D.E();//create an instance of class E
e.methodA();//call methodA 
e.methodB();//call methodB

或者像@Andreas 在评论中提到的那样,您可以使用import A.B.C.D.E;,因此如果您的课程在另一个打包程序中,那么您可以使用name_of_package.A.B.C.D.E 调用您的课程,如下所示:

import com.test.A.B.C.D.E;
//     ^^^^^^^^------------------------name of package

public class Test {

    public static void main(String[] args) {
        E e = new E();
        e.methodA();
        e.methodB();
    }
}

【讨论】:

  • import A.B.C.D.E; E e = new E();。而且您还需要先获得E 的资格,而无需导入。 --- 为了完整起见,如果A 在一个包中,您可能会提到它是如何工作的。
  • 是的@Andreas 这也可以解决问题检查我的编辑
  • Arrsyss?如果这应该是包的例子,那么它应该是小写的,更好的例子可能是org.example
  • 不不@Andreas 我现在检查错误
猜你喜欢
  • 1970-01-01
  • 2017-07-06
  • 2021-04-28
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多