Ausführen des folgenden Code:Generisches Interface Fehler
public static void get(FirebaseObject o, final Class<? extends FirebaseObject> cls, final
Callback<? extends FirebaseObject> callback) {
FirebaseDatabase.getInstance().getReference().child(o.getPath())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
FirebaseObject o = dataSnapshot.getValue(cls);
o.setKey(dataSnapshot.getKey());
cls.cast(o);
callback.onSuccess(cls.cast(o));
}
@Override
public void onCancelled(DatabaseError databaseError) {
callback.onError(databaseError);
}
});
}
public interface Callback<F extends FirebaseObject> {
void onSuccess(F firebaseObject);
void onError(DatabaseError error);
}
Ich erhalte eine Fehlermeldung bei callback.onSuccess(cls.cast(o));
:
`onSuccess <capture ? extends FirebaseObject> in Callback cannot be applied to <capture ? extends FirebaseObject>`
Grundsätzlich Ich versuche, die Class<? extends FirebaseObject> cls
zu übergeben, die in onSuccess()
gegeben wurde, nach der Einstellung Schlüssel.
Gibt es eine Umgehung dieser Fehler? Oder eine alternative Implementierung, um das Ziel zu erreichen?
vielleicht sollten Sie die Methode Parameter generify anstelle Platzhalter verwenden, das heißt 'static void get (T o, letzte Klasse cls, letzte Rückruf Rückruf)' –
Moira
Wenn Sie sagen, "running" , Ich nehme an, du meinst "kompilieren"? –
Aber bitte konstruiere einen [minimalen Testfall] (http://stackoverflow.com/help/mcve), weil es momentan schwierig ist, das Holz für die Bäume zu sehen. –