java - 如何从匿名类设置祖先实例变量?

标签 java instantiation anonymous-class

我有一个无法更改的第三方库类,它有一个 protected我不会在实例化时将其设置为非默认值的实例变量。这个类没有允许我设置此实例变量的 setter 或构造函数。

我试过了

// 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. ,但收到相同的错误消息。

当然,我可以创建一个非匿名后代类并在其构造函数中设置变量。但是是否有可能直接在匿名类中初始化祖先实例变量呢?

最佳答案

您需要使用实例初始化 block :

LibraryClass myInstance = new LibraryClass() {
    {
        instanceVar = true;
    }
};

注意额外的一对大括号。

关于java - 如何从匿名类设置祖先实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51303672/

相关文章:

java - Switch 语句和字符串到字节

java - 如何更新java对象数组中的变量

java - 内部类究竟是如何访问外部类中的元素的?

java - 具有匿名类型构造函数的对象类

java - 从嵌套内部类访问外部内部类

java - 如何在 LibGDX 中绕圆旋转 Sprite?

java - 资源和属性文件管理问题

real-time - CODESYS 中众多功能 block 的实例化 (IEC61131)

c++ - 类模板实例化

java - 如何克隆被声明为抽象父类(super class)的对象?