我有一个不能更改的第三方库类,并且它有一个protected
实例变量,在实例化时我不会将其设置为非默认值。此类没有设置程序,也没有构造函数可以让我设置此实例变量。
我尝试过
// The library class I cannot change:
public class LibraryClass {
protected boolean instanceVar = false;
}
// My code:
public class MyClass {
LibraryClass myInstance = new LibraryClass() {
instanceVar = true;
};
}
,但是在行instanceVar = true;
上出现编译器错误“ this.
和super.
之前加入此行,但是得到了相同的错误消息。
当然,我可以创建一个非匿名后代类,并在其构造函数中设置变量。但是有可能直接在匿名类中初始化祖先实例变量吗?
答案 0 :(得分:1)
您需要使用实例初始化程序块:
LibraryClass myInstance = new LibraryClass() {
{
instanceVar = true;
}
};
注意另外一对括号。
答案 1 :(得分:1)
您可以使用初始化块:
public class MyClass {
LibraryClass myInstance = new LibraryClass() {
{
instanceVar = true;
}
};
}