2016-03-21 24 views
1

Ich habe 2 Variablen, und in einigen Fällen in einem wenn ich sonst entweder den Code mit der ersten Variablen variable1 oder sonst den Code mit dem zweiten variable2.Die deaktivierende Warnvariable wurde möglicherweise nicht initialisiert?

Beide Variablen sind als endgültige deklariert und ich sie nur bei der Bedingung zuweisen, und ich verwende unterschiedliche Aussagen über sie.

Irgendeine Idee, wie ich die Android-Warnung für diese beiden Aussagen deaktivieren könnte?

Gibt es eine andere Möglichkeit, dies zu tun, ohne behauptet oder prüft wird, ob die Variable den Wert null hat, nachdem ich es in der, wenn sonst initialisieren?

Ich bin sehr sicher, dass mein Code funktioniert und es gibt keine Möglichkeit, eine Variable zu verwenden, die nicht initialisiert wird, würde ich eine Möglichkeit bevorzugen, nur die Warnungen für diese Anweisungen und nicht für das gesamte Projekt zu deaktivieren.

Was wäre der beste Weg, dies zu implementieren?

private static class foo { 

private final objectwhatever variable1; 
private final objectwhatever variable2; 

public foo(){ 

    if (condition 1) 
    { 
      variable1 = new objectwhatever(); 
      statements in variable1 
    } 

    else (condition 2) 
    { 
      variable2 = new objectwhatever(); 
      statements in variable2 
    } 

} 
} 
+0

Wenn der Typ der beiden Variablen identisch ist, warum erstellen Sie dann zuerst zwei verschiedene Variablen? Ich verstehe den Anwendungsfall hier nicht. – user2004685

+0

Sie haben keinen genauen (oder sogar gültigen) Code angegeben. Insbesondere haben Sie wahrscheinlich keine "Standard" -Eigenschaft. – chrylis

+0

Warum verwenden Sie nicht nur eine Variable vom Typ 'objectwhatever' und initialisieren sie in Ihrem Konstruktor? –

Antwort

1

A final Variable muss einmal in den Konstruktor zugeordnet werden oder aus ihm heraus. Dies ist eine Java-Regel. Sie können die Fehlerwarnung nicht deaktivieren. Aber wenn Sie final entfernen, wird der Fehler verschwinden.

Aus irgendeinem Grund können Sie alle Android lints deaktivieren möchten, das heißt durch @SuppressWarnings("ALL") Ihrer Klasse oder Methode:

@SuppressWarnings("ALL") 
private static class foo { 

    private objectwhatever variable1; 
    private objectwhatever variable2; 
    ... 
} 

Hoffe, das hilft!

+0

hat der anderen Variablen jeweils eine Nullzuordnung hinzugefügt, vergessen, dass jede letzte Variable einmal mindestens einmal vergeben sein sollte. Deine Antwort brachte mein Gedächtnis zurück, danke. – Lind

0

Wenn Sie es unterdrücken müssen, verwenden Sie @SuppressWarnings("InstanceVariableMayNotBeInitialized"), unterdrücken "ALL" ist Art von Overkill.

Verwandte Themen