Generics: Galileo Computing :: Java ist auch eine Insel - 3 Klassen und Objekte
Die sind dazu da, um den Programmierern aufzuzeigen, was für Typen erwartet werden. Z.B. definiert man keine [c]List[/c], welche Objects kriegt und wieder zurückgibt (und dann gecastet werden müssen), sondern man definiert eine [c]List<String>[/c] und weiss überall, dass es Strings beinhaltet.
Reflection: Zur Laufzeit Methoden, Variablen von Objekten auslesen und aufrufen.
Bitte was ???:LZum Beispiel habe ich eine Klasse mit der Namen "Scool" erstellt und die klasse hat als methode zum Beispiel "getName()", "getStudentZahle()", "getOrt()" usw.. Wenn ich die Methoden von dieser Klasse brauche, dann kann ich "Class" aufrufen. Aber ich kann die Methoden Klassenname.Mthode auch machen. Warum nutze ich "Class"?
allgemeiner heißt es "ObjectType<DataType>" ...Und zweitens : heisst Geneeric nur List<String> oder irgendetwas z.B. Set<KlasseName> usw.???
public class Wrapper<T> {
private T data;
public void setData(T data) {
this.data = data;
}
public T getData() {
return data;
}
}
Wrapper<String> w = new Wrapper<String>();
w.setData("test");
String result = w.getData(); // gibt wieder einen String zurück
Moin,
Bitte was ???:L
<class> deklarierte eine Klasse - oder was ist die Frage ???:L
allgemeiner heißt es "ObjectType<DataType>" ...
Will sagen, Du hast einen Objekttyp (egal ob Liste, Map, Vector oder sonst was), der wiederum nur Objekte von deklarierten Datentyp aufnehmen kann (dies können ggf. auch eigene Konstrukte sein) !
Gruß
Klaus
Ach, ich glaube verstanden . Das heisst, ich kann meine eigene Klassen erstellen, die z.B. Integer, String oder irgenetwas type sein können. Dann, wenn ich etwa ein Variable vom Tpye String erstellen möchte, kann meine eigene Klasse nutzen.Stimmt?Natürlich, du kannst da machen was du willst. Auch eigene Klassen mit Generics implementieren. Z.B. einfach eine Klasse, welche irgendeinen Wert speichert (also einen Wrapper):
Java:public class Wrapper<T> { private T data; public void setData(T data) { this.data = data; } public T getData() { return data; } }
Dann kannst du so was machen:
Java:Wrapper<String> w = new Wrapper<String>(); w.setData("test"); String result = w.getData(); // gibt wieder einen String zurück
Mit der .-Notation kannst du das nur machen, wenn du schon weiß, welche Klassen und Methoden dein Objekt hat. Manchmal weiß man das aber nicht zur Compile-Zeit, sondern kann es erst zur Laufzeit herausfinden - dazu dient dann die Reflection.Ich wollte sagen, warum brauchen wir Reflektion die Eigenschaften einer Klasse aufzurufen? Das können wir mit "."Notation auch schaffen?
Mit der .-Notation kannst du das nur machen, wenn du schon weiß, welche Klassen und Methoden dein Objekt hat. Manchmal weiß man das aber nicht zur Compile-Zeit, sondern kann es erst zur Laufzeit herausfinden - dazu dient dann die Reflection.