Java überschreiben abstrakte generische Methode
Ich habe den folgenden code
public abstract class Event {
public void fire(Object... args) {
//tell the event handler that if there are free resources it should call
//doEventStuff(args)
}
//this is not correct, but I basically want to be able to define a generic
//return type and be able to pass generic arguments. (T... args) would also
//be ok
public abstract <T, V> V doEventStuff(T args);
}
public class A extends Event {
//This is what I want to do
@Overide
public String doEventStuff(String str) {
if(str == "foo") {
return "bar";
} else {
return "fail";
}
}
}
somewhere() {
EventHandler eh = new EventHandler();
Event a = new A();
eh.add(a);
System.out.println(a.fire("foo")); //output is bar
}
Allerdings weiß ich nicht, wie dies zu tun, da ich nicht überschreiben doEventStuff
mit etwas bestimmten.
Weiß jemand, wie dies zu tun?
- Wie ist D definiert?
- Da die generischen Parameter werden nicht angezeigt, sonst nirgends, die Signatur der Methode ist weitgehend äquivalent zu
public abstract Object doEventStuff(Object args)
. Es ist eine Methode, die etwas nimmt, als ein argument, und etwas zurückgibt. Bist du sicher, dass das, was Sie soll? Wenn nicht, werden Sie wahrscheinlich wollen, um zu definieren, dieT
- und/oderV
Parameter auf dieEvent
Klasse, nicht nur für die Methode. - Beachten Sie auch, dass
if(str == "foo") {
ist wahrscheinlich falsch, und Sie braucht so etwas wieif("foo".equals(str)) {
- Thx für die "foo".gleich... das hätte ein Durcheinander, viele Dinge, wenn es ging unbemerkt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht wirklich klar, was du versuchst zu tun, aber vielleicht brauchen Sie nur, um
Event
selbst generic:Bist du mit generics, aber Sie sind nicht die Bereitstellung einer Bindung.
Oder einfacher mit nur einer generischen Bindung...