java:如何从内部就地类调用super方法

k2fxgqgv  于 2021-06-29  发布在  Java
关注(0)|答案(3)|浏览(960)

我有基类foo和spam方法,类bar覆盖spam。我需要在某个回调对象的方法中调用基类的spam,该回调对象在以下位置定义:

  1. public class Foo {
  2. public void spam() {
  3. // ...
  4. }
  5. }
  6. public class Bar extends Foo {
  7. @Override
  8. public void spam() {
  9. objectWhichRequireCallback(new Callback {
  10. @Override
  11. public void onCallback() {
  12. super.spam();
  13. }
  14. });
  15. }
  16. }

此代码不起作用,因为super与回调相关,而不是bar类。是否可以从就地定义的对象调用super方法?

wmomyfyw

wmomyfyw1#

试试这个:
Bar.super.spam(); Bar.this.spam(); 已编译,但它将导致无限递归,因为您调用了相同的spam()本身。

oalqel3c

oalqel3c2#

您可以为此创建一个 Package 器函数,在bar中

  1. public class Bar...
  2. public void mySuperSpam(){
  3. super.spam();
  4. }
neskvpey

neskvpey3#

  1. public class Bar extends Foo {
  2. @Override
  3. public void spam() {
  4. objectWhichRequireCallback(new Callback {
  5. @Override
  6. public void onCallback() {
  7. Bar.super.spam();
  8. }
  9. });
  10. }
  11. }

编辑:对不起。没有意识到方法名是一样的。

相关问题