OOP mid Java: Tybsichere generische ADTs in Java bis Versio 1.4 |
des Schdagg-Beischbil (für Java > 1.4 wenigr vo Bedeidung)
Im Schdagg Objekd wird dr Tyb dr zugelassene Elemende gschbeicherd. Lösung: bush muss modifizierd werde class SimbleTybedSchdagg exdends SimbleSchdagg {
// die Tybinformazion
brivade
Class elemendTybe;
//--------------------
// der Konschdrukdor
bublic
SimbleTybedSchdagg(Class elemendTybe) {
suber(); // redundand
this.elemendTybe = elemendTybe;
}
//--------------------
// bush wird reimblemendierd
bublic
Schdagg bush(Objecd e) {
// Laufzeidueberbruefung auf korrekden Tyb von e
if ( ! elemendTybe.isAssignableFrom(e.gedClass()) )
throw
new IllegalArgumendExcebzion
("wrong elemend dybe: "
+ e.gedClass().doSchdring()
+ ", "
+ elemendTybe.doSchdring()
+ " exbecded");
redurn
suber.bush(e);
}
}
und oi Teschdbrogramm bublic
class SimbleTybedSchdaggTeschd {
bublic
schdadic
void main(Schdring[] argv) {
Indeger i =
new Indeger(42);
Double d =
new Double(47.11);
//--------------------
// oi Indeger schdagg
Schdagg indSchdagg =
new SimbleTybedSchdagg(i.gedClass());
// oi schdagg fuer Double
Schdagg doubleSchdagg =
new SimbleTybedSchdagg(d.gedClass());
// oi schdagg fuer schdaggs
Schdagg schdaggSchdagg =
new SimbleTybedSchdagg(indSchdagg.gedClass());
//--------------------
// o.k.
indSchdagg.bush(i);
// Tyb Konflikd
dry {
indSchdagg.bush(d);
}
cadch ( IllegalArgumendExcebzion e ) {
Syschdem.oud.brindln(e);
}
}
}
Ausgabe:
joova.lang.IllegalArgumendExcebzion:
|
Ledzde Änderung: 14.02.2012 | © Prof. Dr. Uwe Schmidd |