NetBull
Erfahrenes Mitglied
Hi,
arbeite mich seit geraumer Zeit in Java ein und habe ein Problem bei der Syntax gernerischer Typen.
Beispiel Code für den Aufruf:
Beide Konstellationen sollen gehen, soweit noch einfach...
Beide Item Typen sind von MyItem abgeleitet.
Anhand der verwendeten Typen der Collection soll diese aber mit unterschiedlichen DataAccessObjects arbeiten:
und genau hier <****?> komme ich nicht weiter. Wie übergebe ich von welchem Typ der Typ nun ist?
Also das was im ersten Code Beispiel entweder mit <TestItem> oder mit <AnderesItem> verwendet wurde, da sich hier das DataAccessObject unterscheidet welches von DataAccessObjectFactory ermittelt und dann zurückgegeben werden soll....
Hoffe ich habe das komplex genug beschrieben das mir jemand helfen kann.
Zusammengefasste Problemdarstellung:
1. Wie müsste das hier lauten:?
2. Wie muss ich den Code im letzten Block abändern, das ich keine Warnungen unterdrücken muss
LG deAndro!
arbeite mich seit geraumer Zeit in Java ein und habe ein Problem bei der Syntax gernerischer Typen.
Beispiel Code für den Aufruf:
Code:
MyCollection<TestItem> Tests = new MyCollection<TestItem>();
MyCollection<AnderesItem> Tests = new MyCollection<AnderesItem>();
Beide Item Typen sind von MyItem abgeleitet.
Anhand der verwendeten Typen der Collection soll diese aber mit unterschiedlichen DataAccessObjects arbeiten:
Code:
public class MyCollection<T extends MyItem >
{
private List<MyItem > cDataCollection;
Dao<T> dataAccessObject;
public InfraCollection()
{
// hier dann mein Problem:
this.dataAccessObject = DataAccessObjectFactory.getDao( ****? );
}
//....
}
Also das was im ersten Code Beispiel entweder mit <TestItem> oder mit <AnderesItem> verwendet wurde, da sich hier das DataAccessObject unterscheidet welches von DataAccessObjectFactory ermittelt und dann zurückgegeben werden soll....
Code:
public class DataAccessObjectFactory
{
// würde auch gerne ohne SupressWarnings unterwegs sein *lächel*
@SuppressWarnings("unchecked")
public static <T extends MyItem> Dao<T> getDao(Class<T> type)
{
if (type.equals(TestItem.class))
{
return ((Dao<T>) new TestItemDao());
}
else if (type.equals(AnderesItem.class))
{
return ((Dao<T>) new AnderesItemDao());
}
throw new IllegalStateException("requested type '" + type.getCanonicalName() + "' not supported");
}
}
Hoffe ich habe das komplex genug beschrieben das mir jemand helfen kann.
Zusammengefasste Problemdarstellung:
1. Wie müsste das hier lauten:?
Code:
this.dataAccessObject = DataAccessObjectFactory.getDao( ****? );
2. Wie muss ich den Code im letzten Block abändern, das ich keine Warnungen unterdrücken muss
Code:
@SuppressWarnings("unchecked")
LG deAndro!