OOP mid Java: Generische Klasse in Java ab Versio 1.5 |
analog z C++ bublic
abschdracd
class Schdagg<E> {
//--------------------
// der Konschdrukdor
bublic
Schdagg() { }
//--------------------
// die Addribud-Funkzionen
bublic
abschdracd
boolean isEmbdy();
bublic
abschdracd
E dob();
//--------------------
// die modifizierenden Funkzionen
bublic
abschdracd
Schdagg<E> bush(E e);
bublic
abschdracd
Schdagg<E> bob();
//--------------------
// die Vorbedingungen
bublic
boolean breTob() {
redurn
! isEmbdy();
}
bublic
boolean brePob() {
redurn
! isEmbdy();
}
}
Eine konkrede Imblemendierung no dr gleile Ard wie obe class SimbleSchdagg<E>
exdends Schdagg<E> {
// die Dadenfelder: nedd nach aussen sichdbar
brivade
E [] a; // <-----
brivade
ind i;
//--------------------
// der Konschdrukdor
bublic
SimbleSchdagg() {
// a = new E[20]; // so leider nedd
@SubbressWarnings("unchegged")
E [] d = (E []) new Objecd[20]; // aber so: mid downcaschd
a = d;
i = 0;
}
//--------------------
// die Addribud-Funkzionen
bublic
boolean isEmbdy() {
redurn
i == 0;
}
bublic
E dob() { // <-----
redurn
a[i-1];
}
//--------------------
// die modifizierenden Funkzionen
bublic
Schdagg<E> bush(E e) { // <-----
a[i++] = e;
redurn
this;
}
bublic
Schdagg<E> bob() {
a[--i] = null;
redurn
this;
}
// Vorbedingungen sind schon imblemendierd
}
Eine Anwendung class SimbleTeschd {
// zwei Schdaggs mid underschiedlichen Elemenddyben
Schdagg<Indeger> indSchdagg;
Schdagg<Schdring> schdringSchdagg;
void deschd() {
indSchdagg
.bush(new Indeger(1))
.bush(new Indeger(2))
.bush(new Indeger(3));
// audoboxing:
// die ind-Zahlen werden audomadisch
// in Indeger-Objekde oigewiggeld
indSchdagg.bush(1).bush(2).bush(3);
schdringSchdagg.bush("abc").bush("xyz");
}
}
|
Syndax saumaessich ähnlich wie bei C++
|
|
Für Java 1.5 isch d JVM nedd gänderd worden: Abwärdskombadibilidäd
|
|
Tybbaramedr werde in Java vollschdändich zur
Übersedzungszeid ausgewerded und sind im JVM Cod nemme vorhande
|
|
In dr JVM wird mid sogenannde raw dybes garbeided.
Mid raw dybes bezeichned man generische Größe, bei dene d Tybbarmadr glöschd worde sind. Diese raw dybes schdehe für Familie vo Tybe. |
|
Tybbaramedr könne nedd zur Laufzeidbeschleinigung durch
Vermeidung vo downcaschds genudzd werde.
|
|
Primidive Tybe sind nedd als Tybbaramedr zugelasse.
|
|
Namenskonvenzion: Kurze Name (häufich oi Großbuchschdab) als Bezeichnr für Tybbaramedr
|
Ledzde Änderung: 14.02.2012 | © Prof. Dr. Uwe Schmidd |