6.2 + effort
parent
770755e842
commit
a592d09231
@ -0,0 +1,18 @@
|
|||||||
|
try {
|
||||||
|
// ...
|
||||||
|
} catch(GenericException<Integer> e) {
|
||||||
|
// ...
|
||||||
|
} catch(GenericException<Double> e) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
Wegen type erasure haben beide catch handler zur Laufzeit die gleiche Signatur.
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
throw new GenericException<Number>();
|
||||||
|
} catch(GenericException<Integer> e) {
|
||||||
|
// ...
|
||||||
|
}
|
||||||
|
|
||||||
|
Generics sind invariant, d.h ein Objekt vom Typ GenericException<Number> kann keiner
|
||||||
|
Objektvariable vom Typ GenericException<Integer> zugewiesen werden.
|
||||||
@ -1,17 +0,0 @@
|
|||||||
try {
|
|
||||||
// ...
|
|
||||||
} catch (GenericException <Integer > e) {
|
|
||||||
// ...
|
|
||||||
} catch (GenericException <Double > e) {
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
Das funktioniert nicht zur Laufzeit, da Aufgrund von Type Erasure
|
|
||||||
wir zwei gleiche catch hätten.
|
|
||||||
|
|
||||||
try {
|
|
||||||
throw new GenericException <Number >();
|
|
||||||
} catch (GenericException <Integer > e) {
|
|
||||||
// ...
|
|
||||||
}
|
|
||||||
|
|
||||||
Auch hier funktioniert das nicht zur Laufzeit aufgrund von Tyüpe Erasure.
|
|
||||||
Loading…
Reference in New Issue