我正在重新初始化本地类的成员变量,但收到编译错误。这里有什么问题吗?为什么这不能编译?谢谢!
这不会编译
public class TestSomething {
public void someMethod(){
class LocalClassInner{
int i=100; // Error on this line.Syntax error on token ";", , expected
i=200;
}
}
}
编译得很好
public class TestSomething {
public void someMethod(){
class LocalClassInner{
int i=100;
//i=200;
}
}}
最佳答案
这并不是一个真正的本地类问题。您不能将赋值语句放在任何类的“顶层”。
赋值语句需要放在方法、构造函数、静态初始化程序或实例初始化程序中。
你写的时候
int i = 100;
您实际上是在声明内部类的一个字段(如您所知)。您可以重新分配此字段,前提是您在构造函数、方法等中这样做了。
附录
以下使用实例初始值设定项,只是为了好玩:
public void someMethod() {
class LocalClassInner {
int i = 100;
{i=200;}
}
}
它编译得很好,请参阅 http://ideone.com/qjnv3
关于java - 匿名类成员无法重新初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11379404/