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, die T - und/oder V Parameter auf die Event Klasse, nicht nur für die Methode.
  • Beachten Sie auch, dass if(str == "foo") { ist wahrscheinlich falsch, und Sie braucht so etwas wie if("foo".equals(str)) {
  • Thx für die "foo".gleich... das hätte ein Durcheinander, viele Dinge, wenn es ging unbemerkt.
InformationsquelleAutor iuiz | 2011-07-05
Schreibe einen Kommentar