有没有一种叫做 Local Static Inner Class 的东西?

Is there something called Local Static Inner Class?

我只是在尝试使用内部 classes 并遇到了具有局部但静态内部 class 的想法...好吧,我在静态方法中创建了一个内部 class .. 就这么简单.. 这是我做的例子

  class Outer {

    static void m() {
        class LocalStatic {

            void s() {
                System.out.println("static local inner class method");
            }

        }
    }
}

class Demo {

    public static void main(String args[]) {

        Outer.m();
    }
}

这不会给出任何编译错误。

我知道如何访问静态方法 m。但我想知道是否有办法从外部 class 访问本地 class LocalStatic。据我了解,我们无法访问方法里面的东西对吗?因此,我无法从 class Outer 外部访问 LocalStatic 或本地 class 内的任何方法或属性] 只是想确定..

I want to know if there's a way to access the local class LocalStatic from an outside class

没有办法做到这一点。本地 classes 是本地的,所以访问它们的唯一方法是从 class 在范围 *.[=14 中的方法=]

您可以使用非本地基础 class 或接口访问本地 class 的对象:

interface SomeInterface {
    void s();
}
class Outer {
    static SomeInterface m() {
        class LocalStatic implements SomeInterface {
            public void s() {
                System.out.println("static local inner class method");
            }
        }
        return new LocalStatic();
    }
}

现在你可以写了

SomeInterface i = Outer.m();
i.s();

Demo.

* 不用说,还有一种方法可以通过反射访问这些 classes,但那是 Java 语言的能力之外本身。

您可以在任何方法或构造函数或初始值设定项中声明 class。这样的class被称为局部class。该方法是否是静态的无关紧要。除了声明它的方法、构造函数或初始化程序之外,不可能从代码的任何部分引用这样的 class。

本地 classes 几乎从未使用过。我认识一些多年从事专业 java 程序员的人,他们不知道 classes 可以在方法内部声明。

"Hence i can't access either LocalStatic or any methods or attributes inside that local class from outside of the class Outer Just wanted to make sure.."范围比Outerclass还要小——你只能在m()方法中访问LocalStaticclass。

标题中问题的答案是,您可以在静态上下文(静态方法或静态初始值设定项)中声明局部内部 class,但它不会有封闭的 class 实例。所以称它为

是有道理的

Local Static Inner Class

或者

Local static nested class

我从未见过有人这样称呼它们或实际上使用它们。