Java remplacer abstrait méthode générique

J'ai le code suivant

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
}

Cependant je ne sais pas comment faire, car je ne peux pas remplacer doEventStuff avec quelque chose de spécifique.

Personne ne sait comment faire cela?

  • Comment est-T-il défini?
  • Depuis le générique de paramètres n'apparaissent pas n'importe où ailleurs, la signature de la méthode est largement équivalente à public abstract Object doEventStuff(Object args). C'est une méthode qui prend n'importe quoi comme argument, et renvoie à quelque chose. Êtes-vous sûr que c'est ce que vous avez prévu? Si non, vous souhaiterez probablement à définir les T et/ou V paramètres sur la Event classe, et pas seulement pour la méthode.
  • Aussi, soyez conscient que if(str == "foo") { est probablement pas et que vous avez besoin de quelque chose comme if("foo".equals(str)) {
  • Thx pour le "foo".est égal... cela aurait gâché beaucoup de choses, si c'est passé inaperçu.
InformationsquelleAutor iuiz | 2011-07-05