I have a few classes such that:
public class XMLStatusMessage extends XMLMessage {} public abstract class XMLMessage implements IMessage {} public interface IMessageListener { public void onMessage( IMessage message ); } public interface XMLMessageListener <T extends XMLMessage> extends IMessageListener { public void onMessage( T message ); } public interface XMLStatusMessageListener extends XMLMessageListener <XMLStatusMessage> { @Override public void onMessage( XMLStatusMessage message ); }
and
public class AStatusHandler implements XMLStatusMessageListener { //... @Override public void onMessage( XMLStatusMessage message ) { //... } }
My problem is that AStatusHandler won’t compile because I’m not also implementing public void onMessage(IMessage). I don’t see why I should have to implement onMessage(IMessage) also as it already implements onMessage(XMLStatusMessage) and XMLStatusMessage is an IMessage. Is there a simple solution to this problem?
As the other answers point out, you will only be able handle XMLStatusMessage messages in AStatusHandler, but my guess is that this is what you want? Redeclare your interfaces as follows and I believe you will get what you want;
Then you can create your message listener as follows;
Hope this is what you want, and that it helps.
Regards Bent