如何设置匿名类的祖先实例变量?

时间:2018-07-12 10:47:19

标签: java instantiation anonymous-class

我有一个不能更改的第三方库类,并且它有一个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.之前加入此行,但是得到了相同的错误消息。

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

2 个答案:

答案 0 :(得分:1)

您需要使用实例初始化程序块:

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

注意另外一对括号。

答案 1 :(得分:1)

您可以使用初始化块:

public class MyClass {
    LibraryClass myInstance = new LibraryClass() { 
        {
            instanceVar = true;
        }
    };
}