Hallo zusammen,
ich habe mal wieder eine etwas speziellere Frage zu Generics. Folgender Code ist nur ein minimales Beispiel, um hoffentlich einfach zeigen zu können, was ich will:
Es geht mir um die Methode concat in der Klasse MyList. Diese Methode soll die "this"-Liste mit einer übergebenen Liste verknüpfen (wie gesagt, ist nur ein konstruiertes Beispiel). Nun soll der Generic-Typ der zurückgegebenen Liste die Superklasse der beiden Listentypen sein. Also "E extends S" sowie "F extends S" sollen gelten. Meine Idee war folgende:
Dies geht aber nicht, da ein 'super'-bound nicht zulässig ist. Hat jemand eine Idee zu diesem Problem?
lg Kevin
ich habe mal wieder eine etwas speziellere Frage zu Generics. Folgender Code ist nur ein minimales Beispiel, um hoffentlich einfach zeigen zu können, was ich will:
Java:
public class GenericTest {
public static void main(String[] args) {
new MyList<A>().concat(new MyList<A>()).getFirst().aMethod();
new MyList<B>().concat(new MyList<B>()).getFirst().bMethod();
new MyList<A>().concat(new MyList<B>()).getFirst().superMethod();
new MyList<A>().concat(new MyList<Superclass>()).getFirst().superMethod();
new MyList<Superclass>().concat(new MyList<B>()).getFirst().superMethod();
}
static class Superclass {
public void superMethod() {
}
}
static class A extends Superclass {
public void aMethod() {
}
}
static class B extends Superclass {
public void bMethod() {
}
}
static class MyList<E> {
public E getFirst() {
// some stuff
return null;
}
public <S,F> MyList<S> concat(MyList<F> other) {
// some stuff
return null;
}
}
}
Java:
public <S super E,F extends S> MyList<S> concat(MyList<F> other)
lg Kevin