Ich habe die folgende Klasse:Wie instanziiert man eine Unterklasse, ohne sie vorher zu kennen?
public class Abuser {
<T extends Spam> List<T> createSpam() {
List<T> lst = new ArrayList<>();
T s = new T();
s.prepareAd();
lst.add(s);
// the above is done unknown number of times
return lst;
}
}
mit Klassen wie folgt zu verwenden:
public class Spam {
void prepareAd() {}
}
public class WildSpam extends Spam {}
public class MildSpam extends Spam {}
auf folgende Weise:
Abuser a = new Abuser();
Lost<WildSpam> wSpam = a.createSpam();
List<MildSpam> mSpam = a.createSpam();
Wie diese Arbeit mit minimalem Aufwand machen ?
Nun, Sie wissen es im Voraus. Erstellen Sie also zwei Methoden statt nur einer: createWildSpam() und createMildSpam(). –
Die Nützlichkeit des Polymorphismus in Java (oder einer beliebigen OOP-Sprache) ist genau das, dass Sie ein 'Spam'-Objekt verwenden möchten, ohne zu wissen, was seine spezielle Implementierung ist. Können Sie erklären, was Sie hier versuchen? –
Mögliches Duplikat von [* Erzeuge Instanz generischen Typs in Java? *] (Http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java) –