java - 实例化静态嵌套类而不限定封闭类

标签 java static nested

class OuterClass {
  static class StaticNestedClass {}
}

上面的 StaticNestedClass 是通过以下语法实例化的。

    OuterClass.StaticNestedClass nestedObject =
                      new OuterClass.StaticNestedClass();

这很容易理解,但我的问题是相同的嵌套类是通过以下代码在不使用外部类的情况下实例化的

  StaticNestedClass nestedObject =
                      new StaticNestedClass();

请解释为什么它不需要 OuterClass 的资格并且仍然被编译 谢谢

最佳答案

这完全取决于代码的位置以及(如果适用)import 语句是什么。 OuterClass 中的任何代码都会自动识别 OuterClass 的成员,包括任何嵌套类(静态或非静态)。

如果类被导入,其他类中的代码也可以使用非限定的 StaticNestedClass 标识符:

import OuterClass.StaticNestedClass;

public class Elsewhere {
    StaticNestedClass nested = new StaticNestedClass();
    . . .
}

如果没有 import,类 Elsewhere 中的代码将需要使用限定的类名 OuterClass.StaticNestedClass

关于java - 实例化静态嵌套类而不限定封闭类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16197981/

相关文章:

c++ - 定义 const 变量的最佳方式

c# - 静态类的克隆

angularjs - 如何在 AngularJS 中实现嵌套 View ?

php - MYSQL:不是在 while 循环中使用 SELECT 语句——我有什么选择?

java - 在 Ubuntu 中构建 APK react native 应用程序的问题

java - 不同 JVM 之间共享的映射

php - 如何在 Laravel 中提供多个静态文件夹?

Java:将条目长度变化很大的二维数组作为格式化字符串返回

java - 为什么Java不提供标准函数来反转数组?

matlab - 我将如何在 MATLAB 中进行嵌套排序?