有没有一种叫做 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();
* 不用说,还有一种方法可以通过反射访问这些 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.."范围比Outer
class还要小——你只能在m()
方法中访问LocalStatic
class。
标题中问题的答案是,您可以在静态上下文(静态方法或静态初始值设定项)中声明局部内部 class,但它不会有封闭的 class 实例。所以称它为
是有道理的
Local Static Inner Class
或者
Local static nested 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();
* 不用说,还有一种方法可以通过反射访问这些 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.."范围比Outer
class还要小——你只能在m()
方法中访问LocalStatic
class。
标题中问题的答案是,您可以在静态上下文(静态方法或静态初始值设定项)中声明局部内部 class,但它不会有封闭的 class 实例。所以称它为
是有道理的Local Static Inner Class
或者
Local static nested class
我从未见过有人这样称呼它们或实际上使用它们。