我有一个Java内部类的问题,我无法解决。假设你有
class Outer
{
int outer = 0;
class Inner
{
int inner = Outer.this.outer; //(or just outer as it is not shadowed)
inner = 3; //or whatever, even outer = 3
}
}
好吧,当我写最后一个作业时,我得到了编译错误
Syntax error on token ";", , expected
在先例线上。
为什么我不能修改内心?
谢谢!
不能在方法之外有语句。一种技术是使用实例初始化器块:
class Outer
{
int outer = 0;
class Inner
{
int inner = Outer.this.outer; //(or just outer as it is not shadowed)
// instance initializer block:
{
inner = 3; //or whatever, even outer = 3
}
}
}
或者,定义一个构造函数:
class Outer
{
int outer = 0;
class Inner
{
int inner = Outer.this.outer; //(or just outer as it is not shadowed)
Inner() {
inner = 3; //or whatever, even outer = 3
}
}
}
您必须将代码放在方法或构造函数中:
class Outer
{
int outer = 0;
class Inner
{
int inner = Outer.this.outer;
public Inner() {
inner = 3;
}
public increment() {
inner++;
}
}
}
对inner
的赋值必须在方法或构造函数内部,而不是在类中"松散"。
您需要包括以下行:
inner=3;
在内部类的方法中。
Yuo无法在方法外部直接初始化inner = 3;
。确保inner = 3;
在任何方法或构造函数中。
public Inner()
{
inner = 3;
}