Hallo liebes Forum,
Ich habe eine kleine Frage zu dem Funktionsumfang von generischen Typen in Java.
Und zwar habe ich eine Klasse Pair geschrieben, die mich einfach schnell auf zwei zusammengehörige Objekte (z.B. Positionsangaben) zugreifen lässt.
Die sieht (ohne Methoden) so aus:
Jetzt bräuchte ich das ganze noch einmal, nur mit der Einschränkung dass firstEntry jetzt einen anderen Typen annehmen darf als secondEntry.
Im Prinzip könnte ich ja sowas machen wie:
Aber mir wäre es lieber, wenn ich beides über eine Schnittstelle, also im Prinzip ein Interface ansprechen kann.
Das heißt:
Also im Prinzip würde ich da gerne ein Interface darüberlegen, das je nachdem ob man es nur mit einem Typen anspricht ein Paar wie das der ersten Klasse erzeugt und wenn man es mit zwei Typen erzeugt, dann soll es die zweite Klasse nutzen.
Jetzt meine Frage: Ist das irgendwie möglich, und wenn ja: Wie? Oder muss ich mich einfach damit abfinden, dass ich zwei Klassen benutzen muss.
Viele Grüße,
M0rgenstern
Ich habe eine kleine Frage zu dem Funktionsumfang von generischen Typen in Java.
Und zwar habe ich eine Klasse Pair geschrieben, die mich einfach schnell auf zwei zusammengehörige Objekte (z.B. Positionsangaben) zugreifen lässt.
Die sieht (ohne Methoden) so aus:
Java:
public class Pair<T>{
public T firstEntry;
public T secondEntry;
public Pair(T p_First, T p_Second) {
this.m_First = p_First;
this.m_Second = p_Second;
}
}
Jetzt bräuchte ich das ganze noch einmal, nur mit der Einschränkung dass firstEntry jetzt einen anderen Typen annehmen darf als secondEntry.
Im Prinzip könnte ich ja sowas machen wie:
Java:
public class PairMultipleType<T, K>{
public T firstEntry;
public K secondEntry;
public Pair(T p_First, K p_Second) {
this.m_First = p_First;
this.m_Second = p_Second;
}
}
Aber mir wäre es lieber, wenn ich beides über eine Schnittstelle, also im Prinzip ein Interface ansprechen kann.
Das heißt:
Java:
Pair<Integer> myPair = new Pair<Integer>(a, b); //Erzeugt Paar mit nur einem Typ.
Pair<Integer, String> myPair = new Pair<Integer, String>(a, "Hallo Welt"); //Erzeug Paar mit zwei Typen.
Also im Prinzip würde ich da gerne ein Interface darüberlegen, das je nachdem ob man es nur mit einem Typen anspricht ein Paar wie das der ersten Klasse erzeugt und wenn man es mit zwei Typen erzeugt, dann soll es die zweite Klasse nutzen.
Jetzt meine Frage: Ist das irgendwie möglich, und wenn ja: Wie? Oder muss ich mich einfach damit abfinden, dass ich zwei Klassen benutzen muss.
Viele Grüße,
M0rgenstern