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