java - 从匿名内部类引用封闭类'this

标签 java

假设您有以下代码:

public abstract class DecisionFunctionJ {
    public abstract double evaluate();

    public DecisionFunctionJ add(final DecisionFunctionJ another) {
        return new DecisionFunctionJ() {
            @Override
            public double evaluate() {
                return this.evaluate() + another.evaluate();
            }
        };
    }
}

此代码无法按预期工作,因为它会导致无限循环/StackOverflowException。原因很明显:this.evaluate() 引用内部匿名类的 evaluate 方法,而不是 evaluate 方法外部抽象类。

如何执行外部evaluate 方法?使用 DecisionFunctionJ.this.evaluate() 没有帮助,因为这两个类都是 DecitionFunctionJ 类型。

还有哪些可能性?

最佳答案

您可以使用 DecisionFunctionJ.this 引用来引用封闭类:

public abstract class DecisionFunctionJ {
    public abstract double evaluate();

    public DecisionFunctionJ add(final DecisionFunctionJ another) {
        return new DecisionFunctionJ() {
            @Override
            public double evaluate() {
                return DecisionFunctionJ.this.evaluate() + another.evaluate();
            }
        };
    }
}

关于java - 从匿名内部类引用封闭类'this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21558458/

相关文章:

java - 谁能帮助我解决在 Android 中使用 AsyncTask 时收到错误代码 400 的问题

java - 如何扩展android ActionBar?

java - 删除二叉树中的节点

java - Hibernate 5.2.17 不回滚失败的事务

java - 如何同时在两个数组中找到相同的 byte[]-objects?

java - 无法让 Sprite 正确旋转?

java - 将 Runnable 实例传递给 Thread 调用 Thread 子类的 run() 而不是 Runnable 类的 run()

java - 如何在jdbc中为事务设置局部变量

java - 输入数字时分隔文本字段中的数字 (Javafx)

java - 动态字符串数组java