2012-04-09 6 views
-1

der Code, den ich habe, ist:Java generische Objekte wie in der Datenstruktur speichern

interfacebase<T> 

interfaceA extends interface<A> ---> interfaceAImpl implements interfaceA 
interfaceB extends interface<B> ---> interfaceBImpl implements interfaceB 


interfaceA AObj = interfaceAImpl() 
interfaceB BObj = interfaceBImpl() 

meine Frage ist: kann Java-Speicher AOBJ und bobj in einer Liste oder Karte? Wenn Java kann, dann wie man das erreicht

+0

Fügen Sie sie einfach hinzu. – Alexander

+0

Mai OP ist interessiert an Generika Parameter für diese Liste – Premraj

Antwort

1

Folgendes sollte funktionieren, ohne alle Typinformationen zu verlieren.

List<interfacebase<?>> list = new ArrayList<interfacebase<?>>(); 
list.add(AObj); 
list.add(BObj); 
+0

eigentlich mein Fall ist: gibt es eine Methode call_Method_ (T Tobj): Ich muss so anrufen ---> list.get (0) .call_Method_ (Aobj); aber ich kann nicht, also muss ich die Struktur ändern, um eine Basisklasse für A und B zu setzen? – Xiwen

0

Wenn Sie ein ArrayList<Object> oder HashMap<Object> erstellen, können Sie in sie hineinlegen, was auch immer Sie wollen.
Wenn Sie eine definierte Basisklasse/Schnittstelle mit der Bezeichnung BASE haben und einige Objekte aus der abgeleiteten Klasse DERIVED des Objekts speichern möchten, sollten Sie Object in BASE ändern. In diesem Fall können Sie jede Art von Objekt in Ihrer Liste/Karte speichern, die von BASE abgeleitet ist oder es implementiert (im Falle einer Schnittstelle): ArrayList<BASE>, HashMap<BASE>.

Verwandte Themen