Hallo,
ich hab mal folgende Frage (hab mich schon totgesucht):
Nehmen wir an ich habe eine abstrakte Oberklasse, die eine Methode hat. Diese Methode wird in den Unterklassen durch Einschubmethoden (Template Pattern) spezifiert.
Jedoch soll diese Methode (in der abstrakten Klasse) möglichst allgemein sein und damit verschiedene Objekte entgegennehmen können. Dazu sieht sie so aus:
Innerhalb der Methode sollte dann aber das "Object o" wieder seinen wirklichen Typ bekommen (also die Referenz "o" soll dann statt "Object" den Typ der Klasse haben, die hinter dieser Referenz steckt).
Google Suche und Experimente mit ".getclass().cast()" und ähnlichem haben nicht hingehauen.
Über den Sinn und Zweck bitte nicht diskutieren, der spezielle Typ wird später so in einer weiteren externen Methode benötigt.
Oder kann man hier mit Generics arbeiten (bin dort aber nich so fit drin)?
ich hab mal folgende Frage (hab mich schon totgesucht):
Nehmen wir an ich habe eine abstrakte Oberklasse, die eine Methode hat. Diese Methode wird in den Unterklassen durch Einschubmethoden (Template Pattern) spezifiert.
Jedoch soll diese Methode (in der abstrakten Klasse) möglichst allgemein sein und damit verschiedene Objekte entgegennehmen können. Dazu sieht sie so aus:
Code:
public abstract class X{
........
public void doSomething(Object o) {
//hier sollte die Referenz "o" zu seinem wirklichen Typ werden.
//Also wenn hinter Object o ein Objekt vom Typ "Project"
//steht, soll der Referenztyp von o danach auch "Project" sein = Project o.
//Abhandlung
}
..........
}
Innerhalb der Methode sollte dann aber das "Object o" wieder seinen wirklichen Typ bekommen (also die Referenz "o" soll dann statt "Object" den Typ der Klasse haben, die hinter dieser Referenz steckt).
Google Suche und Experimente mit ".getclass().cast()" und ähnlichem haben nicht hingehauen.
Über den Sinn und Zweck bitte nicht diskutieren, der spezielle Typ wird später so in einer weiteren externen Methode benötigt.
Oder kann man hier mit Generics arbeiten (bin dort aber nich so fit drin)?
Zuletzt bearbeitet: