【问题标题】:How can I set ancestor instance variables from an anonymous class? [duplicate]如何从匿名类设置祖先实例变量? [复制]
【发布时间】:2018-07-12 10:47:18
【问题描述】:

我有一个无法更改的第三方库类,它有一个 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; 行出现编译器错误“ expected”。我还尝试在此行之前加上 this.super.,但得到了相同的错误消息。

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

【问题讨论】:

标签: java instantiation anonymous-class


【解决方案1】:

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

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

注意额外的一对大括号。

【讨论】:

    【解决方案2】:

    你可以使用初始化块:

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

    【讨论】:

      猜你喜欢
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2014-02-25
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      相关资源
      最近更新 更多