我正在重新初始化本地类的成员变量,并且收到编译错误。这有什么不对?为什么这不会编译?谢谢!
这不会编译
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;
}
}}
答案 0 :(得分:2)
这不是一个真正的本地课程问题。你不能把赋值语句放在任何类的“顶层”。
赋值语句需要包含方法,构造函数,静态初始化程序或实例初始化程序。
你写的时候
int i = 100;
你实际上是在声明内部类的字段(如你所知)。如果您在构造函数,方法等中执行此操作,则可以重新分配此字段。
<强>附录强>
以下使用实例初始化程序,只是为了好玩:
public void someMethod() {
class LocalClassInner {
int i = 100;
{i=200;}
}
}
编译正常,请参阅http://ideone.com/qjnv3
答案 1 :(得分:0)
第二项任务是错误的。您不能将常规代码放在方法,构造函数或初始化程序之外。这与匿名类无关。
答案 2 :(得分:0)
如果您想更改i的分配,则需要使用方法。
像这样:
public class TestSomething {
public void someMethod(){
class LocalClassInner{
int i=100;
private void setI()
{
i=200;
}
}
}}