Java 无法重新初始化匿名类成员
我正在重新初始化一个局部类的成员变量,并得到一个编译错误。这里怎么了?为什么不编译?谢谢 这不会编译Java 无法重新初始化匿名类成员,java,anonymous-class,Java,Anonymous Class,我正在重新初始化一个局部类的成员变量,并得到一个编译错误。这里怎么了?为什么不编译?谢谢 这不会编译 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; // 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;}
}
}
它编译得很好,请参见第二个赋值错误。不能将常规代码放在方法、构造函数或初始值设定项之外。这与匿名类无关。如果要更改i的赋值,则需要在方法中进行 像这样:
public class TestSomething {
public void someMethod(){
class LocalClassInner{
int i=100;
private void setI()
{
i=200;
}
}
}}
谢谢你,雷。这很有道理。只希望编译器错误更有意义。