Gibt es eine Funktion, mit der ich überprüfen kann, auf welchem Pfad die Variable, für die ich den Fehler "möglicherweise nicht initialisiert" erhalten habe, nicht initialisiert wurde? Vorzugsweise entweder nativ für Java oder integriert in Intellij?Java - Wie wird mit dem Fehler "möglicherweise nicht initialisiert" verfahren?
EDIT: verwaltet meinen Code auf einen minimalen Fehler Beispiel zu reduzieren
class MyFailure{
public static void main (String[] args) throws java.lang.Exception{
String test;
boolean abort = false;
while(!abort){
if(false){
abort = true;
continue;
}
test = "stupid";
if(test.equals("stupid")) break;
}
if(!abort){
System.out.println(test);
}
}
}
Main.java:21: error: variable test might not have been initialized
die while-Schleife von einem Server-Socket liest Angenommen, bis der gepufferte Wert eine bestimmte Bedingung erfüllt, und die if(false)
ist in der Tat eine Überprüfung, ob der Client die Verbindung geschlossen hat, wie würden Sie vorschlagen, dass ich damit umgehen?
Wenn Sie den Pfad nicht mit Ihren Augen finden können, ist Ihr Code zu kompliziert. Zeig es. – Kayaman
Nach meiner Erfahrung ist der Mechanismus für die Entscheidung nicht zu schlau (und sollte wahrscheinlich nicht zu kompliziert sein). Wenn ich zum Beispiel zwei if-else-Konstrukte hintereinander in einer Methode habe und ich weiß, dass ein bestimmter Pfad in der ersten einen bestimmten Pfad in der zweiten impliziert, wird Java das nicht herausfinden. Wenn also meine Variable nur in einem Pfad durch den ersten initialisiert wurde, lässt Java den Wert in keinem der Pfade im zweiten Pfad zu. –
Ein möglicher Trick besteht darin, der Variablen in der Deklaration einen Nonsense-Wert zuzuweisen (wie -4736 für einen Int). Die zwei guten Effekte sind: Java ist glücklich. Und ich bin sicher, herauszufinden, ob der Unsinn-Wert wegen eines Programmierfehlers benutzt wird. –