dyn. Rückgabetyp bei einer Methode

chris_sit

Erfahrenes Mitglied
Hi,

ich habe mir eine Klasse geschrieben, die mit ObjectInputStream/ObjectOutputStream meine Dateien auf der Festplatte speichern/laden.

Jetzt würde ich gerne die Klassen zum laden/speichern so dynamisch gestalten, dass ich verschiedene Objekte damit bearbeiten kann, etwa so in der Art

Java:
public <dynamischerobjekttyp> loadObject(Object obj) {
		try {
			FileInputStream fileStream = new FileInputStream(filename);
			ObjectInputStream ois = new ObjectInputStream(fileStream);
			
			ois.readObject((<dynamischerObjekttyp>) obj )
}

Ich hoffe es ist verständlich was ich meine, tret da seit heute Mittag auf der Stelle und bin nicht wirklich weitergekommen.

Schönen Abend noch,
Chris
 
Mit Java 1.5 geht das ganze durch die Generics sehr komfortabel. Aber auch mit den älteren Versionen ist dies möglich.

Zu Generics gibt es bei "Java ist auch ein Insel" ein interessantes Kapitel: 6.13 Generische Datentypen

Hier ein wenig Code wie du das ganze umsetzen könntest:
Java:
package de.tutorials;


/**
 * @author zeja
 */
public class GenericsExample {
	
	/**
	 * Liest ein Object eines beliebigen Typs
	 * @param <DynamicType> Der Typ des Objekts
	 * @param object Das zu lesende Objekt
	 */
	public <DynamicType> void readObject(DynamicType object){
		System.out.println(object.toString( ));
	}
	
	/**
	 * Liest eine beliebige Zahl ein
	 * @param <DynamicNumberType> Der Typ der Zahl (z.B. Double)
	 * @param num Die zu lesende Zahl
	 */
	public <DynamicNumberType extends Number> void readNumberObject(DynamicNumberType num){
		System.out.println(num.doubleValue( ));
	}
	
	/**
	 * Vor Java 1.5 war das ganze ein wenig umständlicher
	 * @param object Irgendein zu lesendes Objekt
	 */
	public void readObjectPre_1_5(Object object){
		//mit instanceof den Typ des Objektes feststellen
		if(object instanceof Number){
			Number num = (Number) object;
			System.out.println(num.doubleValue( ));
		}
		else{
			System.out.println(object.toString( ));
		}
	}
}
 
Danke für die Antwort - auf die Generics bin ich auch in besagtem Buch gestoßen - kam aber gestern Abend nicht mehr zum Experimentieren - heute Abend wenn ich aus dem Büro zurück bin, werde ich es gleich mal Testen :)
 
Zurück