Es ist wahrscheinlich eine einfache Frage, aber ich sehe es nicht.Java-Listener, generische und Vererbung
Ich habe eine Schnittstelle
public interface RenderableListener<T extends Renderable>{
public void update(T element);
}
Ich habe eine Super-Klasse und eine Renderbeispielklasse Foo, die Render erstreckt.
Jetzt, beim Erstellen der Klasse Foo gebe ich eine Instanz der Schnittstelle als Listener/Beobachter oder was auch immer.
bisher funktioniert alles und ist so wie es sein soll.
aber jetzt in der Foo-Klasse selbst wenn ich versuche, die Schnittstelle so zu nennen:
public class Foo extends Renderable {
private final RenderableListener<? extends Renderable> listener;
public Foo(RenderableListener<? extends Renderable> listener){
this.listener = listener;
}
public void update(){
listener.update(this);
}
}
ich diesen Fehler:
Nun ist die Frage, die ich habe ist, dass SpriteRenderable , das betreffende Argument erweitert Renderable. Was vermisse ich?
edit: Die Idee dahinter ist, dass ich eine Schnittstelle Implementierung für jede Klasse verwenden kann, die Renderable (und es wird viel).
Bitte Ihren Code Refactoring (warum ein Render einen Verweis auf seine eigenen Hörer halten?) Und den Code für SpriteRenderable zeigen. – Silverclaw
Lesen Sie hierzu: http://StackOverflow.com/Questions/2723397/what-is-pecs-producer-extends-consumer-super –
@Silverclaw Nun, es muss die Referenz halten. wie sonst könnte es die Schnittstelle nennen? Ich bin mir nicht sicher, ob ich verstehe, was du meinst. – Adolf