DatabaseException: zwei Getter oder Felder mit widersprüchlichen groß-und Kleinschreibung
Jedes mal, wenn ich versuchen, abrufen von Daten aus meiner Datenbank, ich bekomme
com.google.firebase.database.DatabaseException: Found two getters or fields with conflicting case sensitivity for property: n
jedes meiner Felder, die einen einzelnen Buchstaben. Googeln dieses Problem gibt 0 Ergebnisse und ich finde keinen Fall Unstimmigkeiten in meinem code. Ich weiß nicht, ob das ein bug in der FB oder wenn ich etwas besonderes tun, für alle Felder, die mit Namen, 1 Zeichen lang sein.
Hier ist der rest von dem Fehler berichten, wenn es einen Unterschied macht (die Zeile von meinem code, auf den es verweist, ist eine einfache
params = dataSnapshot.getValue(Parameters.class);
die funktioniert überall sonst:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: osu.gd_prototype, PID: 11345
com.google.firebase.database.DatabaseException: Found two getters or fields with conflicting case sensitivity for property: n
at com.google.android.gms.internal.zzaix$zza.zziw(Unknown Source)
at com.google.android.gms.internal.zzaix$zza.<init>(Unknown Source)
at com.google.android.gms.internal.zzaix.zzj(Unknown Source)
at com.google.android.gms.internal.zzaix.zzd(Unknown Source)
at com.google.android.gms.internal.zzaix.zzb(Unknown Source)
at com.google.android.gms.internal.zzaix.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at osu.gd_prototype.DataSend$1.onDataChange(DataSend.java:107)
at com.google.android.gms.internal.zzafp.zza(Unknown Source)
at com.google.android.gms.internal.zzagp.zzSu(Unknown Source)
at com.google.android.gms.internal.zzags$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Hier ist der code für Parameter mit den entsprechenden problematischen Getter und setter der Felder, die werfen die Fehlermeldung:
public class Parameters {
public int K;
public double L;
public int D;
public int N;
public Parameters() {
}
public double getL(){
return L;
}
public void setL(double lVal){
L = lVal;
}
public int getK(){
return K;
}
public void setK(int kVal){
K = kVal;
}
public int getD(){
return D;
}
public void setD(int dVal){
D = dVal;
}
public int getN(){
return N;
}
public void setN(int nVal){
N = nVal;
}
}
- Zeigen die minimalen code für
Parameters
dass das problem reproduziert bitte. - Ich denke, das sollte geben Sie Sie alle info
- Ah... kann man das Feld nicht öffentlichen? E. g.
protected int N;
Oder lassen Sie es öffentlich, aber entfernen Sie diegetN()
undsetN()
Methoden. - Einstellung alle Felder auf den privaten scheint es behoben, aber ich bin mir nicht ganz sicher, warum.
- Ich Schreibe es in eine Antwort.
- Sind Sie sich dieser Fehler im release-build mit proguard auf??
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die FB-Datenbank betrachten Sie diese Elemente beim serialisieren/Deserialisieren JSON:
Da Sie sowohl einen öffentlichen Bereich
N
undgetN()
/setN()
Methoden, es hält die beiden in Konflikt. Während in diesem Fall die EinstellungN
und ruftsetN()
führt zu dem gleichen Ergebnis, dass möglicherweise nicht immer der Fall sein. Die chance, es falsch ist zu groß, das ist der Grund, warum das Szenario ist einfach nicht erlaubt.Die Fehlermeldung ist ein bisschen ein Ablenkungsmanöver, in diesem Fall. Wir sollten uns verbessern.
Konvertieren Sie die folgenden Felder aus öffentlichen in private
zu
Fand ich eine andere Lösung, um mein Feld
public String id
und zur gleichen Zeit haben die Methodepublic String getId()
die ich brauchte, um zu realisieren, da Sie eine Schnittstelle: markieren Sie Einfach die Methode mit@Exclude
, z.B.: