gemeinsame Methode für ArrayList vererbter Objekte

thinktank

Mitglied
Hallo zusammen,
jetzt habe ich anderthalb Tage versucht, mich in Generics einzulesen und bin verwirrter als vorher. Vielleicht hat ja jemand von Euch einen Ansatz für mich .. das Problem muss eigentlich alltäglich sein:

2 Klassen:
Klasse AssetMinimal
Klasse Asset extends AssetMinimal

Jetzt will ich eine statische Methode haben, die eine ArrayList aufbaut und zurück gibt. Und das natürlich je nachdem vom wem sie gerufen wurde mit AssetMinimal- oder mit Asset-Objekten.


Java:
public static <E extends AssetBaseMinimal> void importAssetsFromFile(ArrayList<String> fn, ArrayList<E> assets) {

  //lies Dateien aus der "fn"-Liste ein (hier uninteressant)
  //baue E-Objekte und füge sie in die ArrayList "assets" ein
  E n = new E(); //<- warum geht das nicht?
  n.fillAssetBaseMinimal(symbol, securityType, exchange, currency, expiry);
  n.setComesFromFilename(fn.get(f));
  assets.add(n);
  //jetzt soll assets eine ArrayList mit dem richtigen Objekttyp sein
}

Ich bekomme das aber nicht hin und habe nirgendwo ein Beispielprogramm gefunden...

Vielen Dank für jeden Tip!
 
Java:
E n = new E(); //<- warum geht das nicht?

Warum geht das nicht? - Aufgrund der Type Erasure: DAraus würde Object n = new Object();

Ich verstehe nicht, warum die Methode Static sein soll.

Irgentwo wird es einen Container geben für die Assets, der weiß doch, welche man da zurückgeben soll.
 
Hallo Marcinek.
Danke für die Antwort.
Ich formuliere es nochmal in Worten, vielleicht ist es dann besser verständlich:

Ich habe eine Klasse AssetMinimal, die mir innerhalb des Programms A ausreicht.
Ich habe eine Klasse Asset die AssetMinimal erweitert, damit ich sie in Programm B verwenden kann.

Beide Programme benötigen eine ArrayList über die jeweiligen Assets. Diese ArrayList will ich mit einer gemeinsam zu nutzenden Methode (importAssetsFromFile) aufbauen.
Dazu muss in dieser Methode ein Asset-Objekt entsprechend des rufenden Programms (A (dann AssetMinimal) oder B (dann Asset)) angelegt werden und in der ArrayList gespeichert werden.

Das ist das, was ich gerne haben will. Vielleicht denke ich auch das Design falsch??

Vielen Dank und Grüße,
Holger
 
Ich habe eine Klasse AssetMinimal, die mir innerhalb des Programms A ausreicht.
Ich habe eine Klasse Asset die AssetMinimal erweitert, damit ich sie in Programm B verwenden kann.
Was heist denn
Code:
Programm A
und
Code:
Programm B
?
Sind dass komplett unabhänige Programme oder verschiedene Teile des Gesamtprogramms?

bye
TT
 
Für mich klingt das eher nach einer Schnittstelle und sollte daher vielleicht per Interface gelöst werden.
 

Neue Themen


Zurück
Oben