22

I have base class Foo with method spam and class Bar which overrides spam. I need to call spam of base class in method of some callback object which is defined in-place:

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

This code is not working because super is related to Callback, not Bar class. Is it possible to call super method from object defined in-place?

1
  • 1
    Have you tried this.Foo.super.span()? Commented Aug 16, 2011 at 14:18

3 Answers 3

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

EDIT : Sorry. DIdn't realize the method names are the same.

Sign up to request clarification or add additional context in comments.

2 Comments

I was sure that I tried this approach before asking question, but Eclipse gave me error. It seems that I was inattentive. Now I retried. It works! Thanks!
4

Try this: Bar.super.spam();

Bar.this.spam(); is compiled but it will cause infinite recursion because you call the same spam() itself.

1 Comment

Everybody loves a good Stack Overflow. I mean, we're here, after all.
3

You can create a wrapper function for this, in Bar

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

1 Comment

Shouldn't that be mySuperDuperSpam? :)

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.