Java:如何从内部内部类调用super方法

时间:2011-08-16 14:15:45

标签: java callback override super

我的基类 Foo 包含方法垃圾邮件和类 Bar ,它会覆盖垃圾邮件。我需要在一些就地定义的回调对象的方法中调用基类的垃圾邮件

public class Foo {
    public void spam() {
        // ...
    }
}

public class Bar extends Foo {
    @Override
    public void spam() {
        objectWhichRequireCallback(new Callback {
            @Override
            public void onCallback() {
                super.spam();
            }
        });
    }
}

此代码无效,因为 super Callback 相关,而非 Bar 类。是否可以从就地定义的对象调用super方法?

3 个答案:

答案 0 :(得分:29)

public class Bar extends Foo {
    @Override
    public void spam() {
        objectWhichRequireCallback(new Callback {
            @Override
            public void onCallback() {
                Bar.super.spam();
            }
        });
    }
}

编辑:抱歉。 DId没意识到方法名称是一样的。

答案 1 :(得分:3)

您可以在Bar

中为此创建包装函数
public class Bar...

    public void mySuperSpam(){
        super.spam();
    }

答案 2 :(得分:2)

试试这个:Bar.super.spam();

Bar.this.spam();已编译但会导致无限递归,因为您调用的是相同的spam()本身。