Generics kein Zugriff auf getter eines Objekts

  • Themenstarter Themenstarter gtrw4wtgw43gw4g
  • Beginndatum Beginndatum
G

gtrw4wtgw43gw4g

Gast
Hallo zusammen,

ich arbeite mich gerade in Generics ein aber komme hier nicht so ganz weiter...
Nach der Übergabe in eine eigene Liste habe ich keinen Zugriff mehr auf die get Funktion.
Ist schwer zu erklären...Code ist unten
Wieso kann ich in der Studentenliste in der Methode
public void add(T pPerson) nicht pPerson.getName machen? Ohne Generics also ohne T würde das alles wunderbar funktionieren...

Danke für Eure Hilfe..

class Person {
String name;
public Person(String string) {
this.name = string;
}
public String getName() {
return name;
}
}

class Student extends Person {
int zahl;
public Student(String string, int i) {
super(string);
this.zahl = i;
}
}

public class PersonenListe<T> {
ArrayList<T> list = new ArrayList<T>();
T pers;

public void add(T pPerson) {
this.pers=pPerson;
list.add(pPerson);
}
}


class PersonenTest {
public static void main(String[] args) {

PersonenListe<Person> personenListe = new PersonenListe<Person>();

personenListe.add(new Person("Hans"));
personenListe.add(new Person("Annelis"));

PersonenListe<Student> studentenListe = new PersonenListe<Student>();
studentenListe.add(new Student("Max", 4711));
studentenListe.add(new Student("Anna", 4712));
studentenListe.add(new Student("Clara", 4713));
}
}
 
Wieso kann ich in der Studentenliste in der Methode
public void add(T pPerson) nicht pPerson.getName machen?
Weil doch zu dem Zeitpunkt doch noch völlig unklar ist was T für nen Typ hat. T kann doch in deiner generischen Klasse jeden möglichen Typ annehmen.

Was du machen könntest wäre T einzuschränken auf Person und deren Unterklassen, dann kannst du die Methoden aus Person nutzen.
 
Super besten Dank...ich habe jetzt public class PersonenListe<T extends Person>
und es funktioniert :-D
 

Neue Themen


Zurück
Oben