【发布时间】:2020-04-07 12:55:10
【问题描述】:
为什么test变量在localClassMethod内部和tt方法外部出现编译错误,但在tt方法编译是ok的。
表示内部类实例变量不能修改外部类实例变量,但内部类局部变量可以修改外部类实例变量。
public class Outer {
int test = 0;
void classMethod() {
class localClassInMethod {
int k = test;//compile ok
test = 1;//compile error
public void tt() {
test++;//compile ok
int m = test;//compile ok
}
}
}
}
【问题讨论】:
-
不,你可以看到它编译正常并且方法内部的内部类。
-
你不能在类主体(外部函数)中设置任何东西(除了声明)。
-
哇,直到现在我才知道你可以在方法中放置一个类!
-
@rockwe 原因是 Java 设计者决定如何设计该语言。一个类包含字段声明、静态和初始化块、构造函数和方法。不是随机的可执行指令。这些进入方法、构造函数和初始化块。
-
@Sweeper 是的!我相信他们被称为local classes。
标签: java anonymous-inner-class