Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何从内部就地类调用超级方法_Java_Callback_Overriding_Super - Fatal编程技术网

Java:如何从内部就地类调用超级方法

Java:如何从内部就地类调用超级方法,java,callback,overriding,super,Java,Callback,Overriding,Super,我有基类Foo和方法spam以及覆盖spam的类Bar。我需要在某个回调对象的方法中调用基类的spam,该回调对象已在适当位置定义: public class Foo { public void spam() { // ... } } public class Bar extends Foo { @Override public void spam() { objectWhichRequireCallback(new Callba

我有基类Foo和方法spam以及覆盖spam的类Bar。我需要在某个回调对象的方法中调用基类的spam,该回调对象已在适当位置定义:

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与回调相关,而不是Bar类。可以从就地定义的对象调用超级方法吗

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

编辑:对不起。没有意识到方法名称是相同的。

您可以在工具栏中为此创建包装函数

public class Bar...

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

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


Bar.this.spam()已编译,但它将导致无限递归,因为您调用的是相同的垃圾邮件()。

您是否尝试过此.Foo.super.span()?这不应该是mySuperDuperSpam吗?:);-)我确信我在提问之前尝试过这种方法,但Eclipse给了我错误。我好像没有注意到。现在我再试一次。它起作用了!谢谢@AlistairIsrael——感谢您指出这个明显的错误。每个人都喜欢好的堆栈溢出。我是说,毕竟我们在这里。