/* VecPair<a,b> Menge<? extends Pair<a,c>> */ /* Funktioniert !!! */ /* VecPair<a,b> Menge<Pair<a,c>> */ /* Funktioniert !!! */ /* VecPair<Number,b> Menge<Pair<a,c>> */ /* Funktioniert !!! */ /* Menge<VecPair<? extends Number, Integer>> Menge<a> */ /* Funktioniert !!! nochmals ueberpruefen 07-07-29 */ /* VecPair<? extends Number, Integer> Menge<Pair<? extends Number,Integer>> */ /* Funktioniert kein Unifier!!! */ /* VecPair<? extends Number, Integer> Menge<? extends Pair<? extends Number,Integer>> */ /* Funktioniert!!! */ /* Menge<b> Menge<? extends Menge<Pair<a,c>>> */ /* funktioniert */ /* Erg.: [[(TPH a = TPH A), (TPH c = Integer), (TPH b = ? extends VecPair< TPH A, TPH B >)], [(TPH a = TPH A), (TPH c = Integer), (TPH b = VecPair< TPH A, TPH B >)], [(TPH b = ? extends Menge< Pair< TPH a, TPH c > >)], [(TPH b = Menge< Pair< TPH a, TPH c > >)]] */ /* Menge<b> Menge<? extends Menge<Pair<Number,c>>> */ /* Erg: [[(TPH c = Integer), (TPH b = VecPair< Number, TPH B >)], [(TPH c = Integer), (TPH b = ? extends VecPair< Number, TPH B >)], [(TPH b = Menge< Pair< Number, TPH c > >)], [(TPH b = ? extends Menge< Pair< Number, TPH c > >)]] */ /* Menge<b> Menge<? extends Menge<a>> */ /* Erg.: [[(TPH a = Pair< TPH A, Integer >), (TPH b = ? extends VecPair< TPH A, TPH B >)], [(TPH a = Pair< TPH A, Integer >), (TPH b = VecPair< TPH A, TPH B >)], [(TPH a = ? extends Pair< TPH A, Integer >), (TPH b = ? extends VecPair< TPH A, TPH C >)], [(TPH a = ? extends Pair< TPH A, Integer >), (TPH b = VecPair< TPH A, TPH C >)], [(TPH a = ? extends Pair< TPH A, ? extends Integer >), (TPH b = ? extends VecPair< TPH A, TPH D >)], [(TPH a = ? extends Pair< TPH A, ? extends Integer >), (TPH b = VecPair< TPH A, TPH D >)], [(TPH a = ? extends Pair< TPH A, ? extends Number >), (TPH b = ? extends VecPair< TPH A, TPH E >)], [(TPH a = ? extends Pair< TPH A, ? extends Number >), (TPH b = VecPair< TPH A, TPH E >)], [(TPH a = ? extends Pair< TPH A, ? extends Object >), (TPH b = ? extends VecPair< TPH A, TPH F >)], [(TPH a = ? extends Pair< TPH A, ? extends Object >), (TPH b = VecPair< TPH A, TPH F >)], [(TPH a = ? extends Pair< TPH A, ? super Integer >), (TPH b = ? extends VecPair< TPH A, TPH G >)], [(TPH a = ? extends Pair< TPH A, ? super Integer >), (TPH b = VecPair< TPH A, TPH G >)], [(TPH a = ? extends Object), (TPH b = ? extends VecPair< TPH A, TPH H >)], [(TPH a = ? extends Object), (TPH b = VecPair< TPH A, TPH H >)], [(TPH a = ? super Pair< TPH A, Integer >), (TPH b = ? extends VecPair< TPH A, TPH I >)], [(TPH a = ? super Pair< TPH A, Integer >), (TPH b = VecPair< TPH A, TPH I >)], [(TPH b = ? extends Menge< TPH a >)], [(TPH b = Menge< TPH a >)]] */ /* Menge<VecPair<Number,Integer>> Menge<? extends Menge<a>> */ /* funktioniert */ /* Erg. [[(TPH a = Pair< Number, Integer >)], [(TPH a = ? extends Pair< Number, Integer >)], [(TPH a = ? extends Pair< Number, ? extends Integer >)], [(TPH a = ? extends Pair< Number, ? extends Number >)], [(TPH a = ? extends Pair< Number, ? extends Object >)], [(TPH a = ? extends Pair< Number, ? super Integer >)], [(TPH a = ? extends Pair< ? extends Number, Integer >)], [(TPH a = ? extends Pair< ? extends Number, ? extends Integer >)], [(TPH a = ? extends Pair< ? extends Number, ? extends Number >)], [(TPH a = ? extends Pair< ? extends Number, ? extends Object >)], [(TPH a = ? extends Pair< ? extends Number, ? super Integer >)], [(TPH a = ? extends Pair< ? extends Object, Integer >)], [(TPH a = ? extends Pair< ? extends Object, ? extends Integer >)], [(TPH a = ? extends Pair< ? extends Object, ? extends Number >)], [(TPH a = ? extends Pair< ? extends Object, ? extends Object >)], [(TPH a = ? extends Pair< ? extends Object, ? super Integer >)], [(TPH a = ? extends Pair< ? super Number, Integer >)], [(TPH a = ? extends Pair< ? super Number, ? extends Integer >)], [(TPH a = ? extends Pair< ? super Number, ? extends Number >)], [(TPH a = ? extends Pair< ? super Number, ? extends Object >)], [(TPH a = ? extends Pair< ? super Number, ? super Integer >)], [(TPH a = ? extends Pair< ? super Integer, Integer >)], [(TPH a = ? extends Pair< ? super Integer, ? extends Integer >)], [(TPH a = ? extends Pair< ? super Integer, ? extends Number >)], [(TPH a = ? extends Pair< ? super Integer, ? extends Object >)], [(TPH a = ? extends Pair< ? super Integer, ? super Integer >)], [(TPH a = ? extends Object)], [(TPH a = ? super Pair< Number, Integer >)]] */ /* Menge<b> Menge<? extends Menge<? extends Pair<Number,c>>> */ /* Erg. stimmt [[[(TPH c = Integer), (TPH b = ? extends VecPair< Number, TPH B >)], [(TPH c = Integer), (TPH b = VecPair< Number, TPH B >)], [(TPH c = ? extends Integer), (TPH b = ? extends VecPair< Number, TPH C >)], [(TPH c = ? extends Integer), (TPH b = VecPair< Number, TPH C >)], [(TPH c = ? extends Number), (TPH b = ? extends VecPair< Number, TPH D >)], [(TPH c = ? extends Number), (TPH b = VecPair< Number, TPH D >)], [(TPH c = ? extends Object), (TPH b = ? extends VecPair< Number, TPH E >)], [(TPH c = ? extends Object), (TPH b = VecPair< Number, TPH E >)], [(TPH c = ? super Integer), (TPH b = ? extends VecPair< Number, TPH F >)], [(TPH c = ? super Integer), (TPH b = VecPair< Number, TPH F >)], [(TPH b = ? extends Menge< ? extends Pair< Number, TPH c > >)], [(TPH b = Menge< ? extends Pair< Number, TPH c > >)], [(TPH b = ? extends Menge< Pair< Number, TPH c > >)], [(TPH b = Menge< Pair< Number, TPH c > >)]] */ class Number {} class Integer extends Number {} class Menge<a> { } class Pair<a,b> { } class VecPair<a,b> extends Menge<Pair<a,Integer>> { }