Ich versuche, eine rekursive Methode (Funktion) zu erstellen. Diese Methode behandelt Objekte einer anderen Klasse, wobei jede Instanz 3 Integer-Felder hat. (Integer var1, var2, var3;). Ich habe mich gefragt, ob es eine Ausnahme oder einen Fehler von "Variable wurde möglicherweise nicht initialisiert" gibt, in diesem Fall wird die Methode gestoppt. Zuerst dachte ich, es würde nullPointerException werfen, weil es ein Objekt ist, aber das Auspacken funktioniert automatisch. Gibt es eine Lösung? (Ich weiß, das ist ein Kompilierungsfehler ...)Java: Catch-Ausnahme der Variablen wurde möglicherweise nicht initialisiert
Antwort
Eine Möglichkeit besteht darin, vor der Verwendung zu überprüfen, ob es sich um eine Instanz des Klassentyps handelt oder nicht. Betrachten Sie folgendes:
Integer x = null;
Integer y = new Integer(0);
if(x instanceof Integer)
System.out.println("x is initialized.");
else
System.out.println("x is NOT initialized.");
if(y instanceof Integer)
System.out.println("y is initialized.");
else
System.out.println("y is NOT initialized.");
Der Ausgang führt:
x ist nicht initialisiert.
y ist initialisiert.
Sie können alle drei Variablen mit Dummy/temporären Werten im äußeren Bereich dieser Methode initialisieren und sie dann mit dem überschreiben, was an Ihre Methode übergeben wird. Beispiel:
Integer myVar1 = 0;
Integer myVar2 = 0;
Integer myVar3 = 0;
public static void yourMethod(Integer var1, Integer var2, Integer var3) {
try {
myVar1 = var1;
myVar2 = var2;
myVar3 = var3;
... your code
catch(NullPointerException ex) {
// handling error code
}
}
Verwenden Sie 'new Integer()' nur, wenn Sie eindeutige Referenzen benötigen. – shmosel
@Jayson Aber wie eine Ausnahme dann zu fangen? – JAAAY
Sie würden Ihren Code einfach in einen Versuch fangen. Ich denke, Sie verwirren, welche Art von Fehler Sie erwarten, wenn diese Variablen nicht an anderer Stelle initialisiert werden.Wenn sie nie initialisiert werden, erhalten Sie einen Kompilierungsfehler, aber wenn Sie eine Null übergeben und Sie versuchen, damit umzugehen, werden Sie einen anderen Fehler, z. ein Nullzeiger. also können Sie Dinge wie var1.intValue() nicht tun; – Jayson
- 1. Variablen-ID wurde möglicherweise nicht initialisiert (JSP)
- 2. Die deaktivierende Warnvariable wurde möglicherweise nicht initialisiert?
- 3. Variable wurde möglicherweise nicht initialisiert Fehler
- 4. Variable g wurde möglicherweise nicht initialisiert
- 5. Das leere letzte Feld INITIAL wurde möglicherweise nicht initialisiert
- 6. "Variablenbeispiel wurde möglicherweise nicht initialisiert" in anonymer Klasse
- 7. Android/Java-Variablen außerhalb des Geltungsbereichs möglicherweise
- 8. Variable wurde möglicherweise Fehler in Java
- 9. java.lang.IllegalStateException: ServletConfig wurde nicht initialisiert
- 10. Die Sammlung wurde nicht initialisiert
- 11. ConnectionString-Eigenschaft wurde nicht initialisiert
- 12. NoUiSlider Wurde bereits initialisiert
- 13. Dapper: Die ConnectionString-Eigenschaft wurde nicht initialisiert
- 14. Die ConnectionString-Eigenschaft wurde nicht initialisiert. VB.Net
- 15. Scalikejdbc teradata "Verbindungspool wurde noch nicht initialisiert."
- 16. (Lernen von Java) Initialisierte Variable meldet es nicht initialisiert
- 17. phpstorm warning php Variable wurde möglicherweise nicht definiert
- 18. java: Gibt es eine Möglichkeit, geschriebene Klasse zu vermeiden? (Variable wurde nicht initialisiert)
- 19. Initialisierung einer Variablen, die von IBoutlet-Variablen für einen View-Controller initialisiert wurde?
- 20. Wie werden diese Variablen initialisiert?
- 21. Java - Können endgültige Variablen im statischen Initialisierungsblock initialisiert werden?
- 22. Warum Dateibereich statische Variablen müssen initialisiert werden?
- 23. Der iOS Simulator libSystem wurde in der falschen Reihenfolge initialisiert
- 24. Sammlung wurde geändert; Aufzählungsoperation wird möglicherweise nicht ausgeführt. Treenode Remove
- 25. MVC Action Filters Collection wurde geändert; Enumerationsvorgang möglicherweise nicht ausgeführt
- 26. Getting Collection wurde geändert; Aufzählungsoperation wird möglicherweise nicht ausgeführt. Ausnahme
- 27. Eine angegebene Anmeldesitzung existiert nicht. Möglicherweise wurde es bereits beendet
- 28. C# -Memory-Modell und nichtflüchtige Variable, die vor der Erstellung der anderen Threads initialisiert wurde
- 29. Dropdown-Menü Frage, möglicherweise einfach möglicherweise nicht
- 30. Wie zu beheben "Die ConnectionString-Eigenschaft wurde nicht initialisiert"
Ihre Frage ergibt keinen Sinn. Felder werden standardmäßig auf null initialisiert (wenn es sich um Referenztypen handelt); Sie sollten also keinen Kompilierungsfehler von dem erhalten, was Sie beschreiben. (Die Variablen-möglicherweise-nicht-initialisierten Kompilierungsfehler sind nur für lokale Variablen und endgültige Felder.) Können Sie Ihren tatsächlichen Code posten? – ruakh
Ein einfaches Beispiel: Klassenarbeit { \t public static void main (String args []) { \t \t Integer x; \t \t System.out.println (x); \t} \t } Klassenarbeit { \t public static void main (String args []) { \t \t Integer x = null; \t \t System.out.println (x); } \t \t } Ausgang 1: test.java: 5: Fehler: Variable x kann \t \t System.out.printin (x) nicht initialisiert worden sind; \t \t^ 1 Fehler Ausgang 2: null – JAAAY
Ich glaube, er in einen Compiler-Fehler ausgeführt wird, weil der Parameter (s) er nicht initialisiert vorbei ist, ist, und er versucht, dass die Compiler-Fehler mit einem try/catch zu umgehen. – Jayson