java version "1.8.0_92"
Ich versuche, eine generische Schnittstelle und eine Klasse, die es implementiert. Dies ist die Schnittstelle:Verwenden von generischen Schnittstellen und Klassen
interface UpdateDBListener<T> {
void onUpdateSuccess(T person);
void onUpdateFailure(String errMessage);
}
void updatePerson(T person, UpdateDBListener updateDBListener);
Fehler:
error: cannot find symbol method getId() where T is a type-variable: T extends Object declared in class PeopleListModelImp
Und das ist die Klasse, die implementiert es:
public class PeopleListModelImp<T> implements PeopleListModelContract<T> {
@Override
public void updatePerson(T person, UpdateDBListener updateListener) {
String id = person.getId(); /* ERROR */
}
Die Klasse I in dieser Geschichte in bin mit:
public class Person {
String mId;
String mFirstName;
String mLastName;
public Person() {
}
public String getId() {
return mId;
}
public void setId(String id) {
this.mId = id;
}
public String getFirstName() {
return mFirstName;
}
public void setFirstName(String firstName) {
this.mFirstName = firstName;
}
public String getLastName() {
return mLastName;
}
public void setLastName(String lastName) {
this.mLastName = lastName;
}
}
Allerdings, wenn ich es versuche Holen Sie sich die Id in der Klasse, die die Schnittstelle I auf dieser Linie einen Fehler implementiert:
String id = person.getId();
ich als Person denken, wissen es nicht eine Person-Klasse, so dass nicht die getId nicht versteht(). Ich frage mich nur, ob ich das falsch mache. Ich möchte, dass die Klasse komplett generisch ist, damit ich sie für andere Klassen verwenden kann.
Ist das möglich?
Vielen Dank im Voraus.
'" Ich bekomme einen Fehler in dieser Zeile: ... "' - welcher Fehler? Sie waren lange genug hier, um zu wissen, dass Sie diese wichtige Information, die vollständige Fehlermeldung, notieren sollten. –
Auch Ihre Schnittstelle und die von der Klasse implementierte Schnittstelle sind völlig anders? –
Was möchten Sie genau machen? Kann ich Ihre main() -Methode sehen? –