Moin zusammen !
Wir haben in unserer vorletzten Vorlesung etwas zum Thema Generics& LinkedList gelernt.
So wie ich das verstanden habe, werden Generics(<T>) einfach nur dafür benutzt um festzulegen, welcher Datentyp die Elemente(z.B. in einer LinkedList )beinhalten.
Generics werden in spitze Klammern gesetzt und nach einem Klassennamen geschrieben. Danach kann man den Klassennamen bei der Erzeugung eines Objekts einfach durch den Typparameter T ersetzen und das wars.
Wir haben einen Aufgabenzettel bekommen wo wir erst 3 Klassen schreiben sollten :
Student ( nachname,vorname, jahrgang, matnr)
Node (next, Student data)
LinkedList (root, last, current <- Alle vom Typ Node)
Es gibt eine Test Klasse die wie folgt geschrieben ist:
So wie ich das hier geschrieben habe funktioniert es auch. Wir hatten die Aufgabe in den Klassen Node und LinkedList, alle Studentenobjekte mit den Generics zu ersetzen, so dass die main Klasse auch funktioniert danach.
Ich musste hier nur 2 mal von Object auf Student typecasten, was irgendwie glaube nicht so toll ist und unser eigentliches Ziel war ...
Ohne die Typecasts kam die Fehlermeldung : Cannot convert from Object to Student
Wie löse ich das mit Generics in der Mainmethode ? Ich habe <T> ja bereits beim Klassennamen hingeschrieben, nur egal wo ich ein T setze, kommt immer die Fehlermeldung mit static reference to a non-static field...
Ich will jetzt auch nicht die Lösung vorgekaut bekommen sondern freue mich über Tipps und Hinweise, wie ich das jetzt gelöst bekomme.
Vielen Dank !
Wir haben in unserer vorletzten Vorlesung etwas zum Thema Generics& LinkedList gelernt.
So wie ich das verstanden habe, werden Generics(<T>) einfach nur dafür benutzt um festzulegen, welcher Datentyp die Elemente(z.B. in einer LinkedList )beinhalten.
Generics werden in spitze Klammern gesetzt und nach einem Klassennamen geschrieben. Danach kann man den Klassennamen bei der Erzeugung eines Objekts einfach durch den Typparameter T ersetzen und das wars.
Wir haben einen Aufgabenzettel bekommen wo wir erst 3 Klassen schreiben sollten :
Student ( nachname,vorname, jahrgang, matnr)
Node (next, Student data)
LinkedList (root, last, current <- Alle vom Typ Node)
Es gibt eine Test Klasse die wie folgt geschrieben ist:
Java:
public class TestLinkedList<T> {
public static void main(String[] args) {
Student first = new Student ("Mueller", "Markus", 1990,1);
Student second = new Student ("Meier", "Michael", 1991,2);
Student third = new Student ("Schmidt","Sebastian",1992,3);
LinkedList studenten = new LinkedList();
studenten.append(first);
studenten.append(second);
studenten.append(third);
studenten.append(first);
if (studenten.isEmpty())
return;
Student s = (Student)studenten.getFirst();
System.out.println(s);
while (studenten.hasNext()) {
s = (Student)studenten.getNext();
System.out.println(s);
}
studenten.getFirst();
System.out.println(studenten.hasNext());
System.out.println(studenten.getLast());
}
}
So wie ich das hier geschrieben habe funktioniert es auch. Wir hatten die Aufgabe in den Klassen Node und LinkedList, alle Studentenobjekte mit den Generics zu ersetzen, so dass die main Klasse auch funktioniert danach.
Ich musste hier nur 2 mal von Object auf Student typecasten, was irgendwie glaube nicht so toll ist und unser eigentliches Ziel war ...
Ohne die Typecasts kam die Fehlermeldung : Cannot convert from Object to Student
Wie löse ich das mit Generics in der Mainmethode ? Ich habe <T> ja bereits beim Klassennamen hingeschrieben, nur egal wo ich ein T setze, kommt immer die Fehlermeldung mit static reference to a non-static field...
Ich will jetzt auch nicht die Lösung vorgekaut bekommen sondern freue mich über Tipps und Hinweise, wie ich das jetzt gelöst bekomme.
Vielen Dank !