NullPointerException

scratchy1

Bekanntes Mitglied
Hallo Leute,
Ich probiere gerade enum-Klassen aus. Eigentlich müsste jede Methode, die ein Enum-Objekt bearbeitet, niemals null zurückgeben:
Java:
enum EWochentag2 {
    Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag;

    EWochentag2[] alleTage = EWochentag2.values();
    int i, j;

    public EWochentag2 naechsterTag() {
        i = (this.ordinal() + 1) % 7;
        return alleTage[i];
    }

    public EWochentag2 vorigerTag() {
        
        j = (this.ordinal() - 1) % 7;
        return alleTage[j];
    }
}

Und der Test:
Java:
public class EWochentag2Test {

    public static void main(String[] args) {
      

        EWochentag2.Dienstag.naechsterTag();
        EWochentag2.Dienstag.vorigerTag();
        
    }

}

Was könnte hier null sein?
 

httpdigest

Top Contributor
Das Problem ist, dass du eine Instanzvariable `alleTage` mit `EWochentag2.values()` initialisierst. Um die einzelnen Enum Werte zu instanziieren, generiert der Compiler einen static {} Block in die Enum-Klasse, die die einzelnen Enum Werte per `new` instanziiert. Nachdem alle Enum Werte instanziiert wurden, werden sie in ein generiertes VALUES Array geschrieben. Dieses VALUES Array ist jenes, welches die (ebenfalls vom Compiler generierte) Methode `values()` als neue Kopie zurückliefert. Da du aber bereits als Instanzvariable auf das Array zugreifen möchtest, es aber noch nicht existiert (weil es ja gerade gebaut wird), bekommst du die NullPointerException, und weil das Ganze innerhalb der Klasseninitialisierung in dem static {} Block passierte, auch noch einen java.lang.ExceptionInInitializerError.
Du kannst das Problem umgehen, indem du dein `alleTage` Array als Klassenvariable und nicht Instanzvariable deklarierst.
 

scratchy1

Bekanntes Mitglied
Hallo httpdigest,
Vielen Dank, da wär ich von alleine momentan nie drauf gekommen. Ich habe jetzt alleTage als Klassenvariable deklariert, indem ich static davor geschrieben habe. Jetzt bekomme ich zwar wenigstens keine Fehlermeldungen, aber es wird nichts ausgegeben auf meiner Konsole, wenn ich den Test ausführe.
 

httpdigest

Top Contributor
ahh ja... würde ich nicht machen.
Ehrlich, ich wusste das bis eben auch noch nicht. Hab einfach deinen Code copy/pasted, ausgeführt, die Exception gesehen und dann mit `javap -v` geguckt, was eigentlich passiert bzw. generiert wurde.
 

scratchy1

Bekanntes Mitglied
Ok, das ist mir zuviel, solange man das nicht als einzelne Zeile irgendwo reinschieben kann und ich sofort etwas für mich daraus schliessen kann. ;)
 

scratchy1

Bekanntes Mitglied
Vielleicht kann ich es für die Zukunft generalisieren, immer wenn ich eine NullPoninterException bekomme, schreibe ich ein static bei Variablen, die in Gefahr schweben, könnte diese Vorgehensweise Nachteile haben oder sowieso unsinnig sein?
 

mrBrown

Super-Moderator
Mitarbeiter
Vielleicht kann ich es für die Zukunft generalisieren, immer wenn ich eine NullPoninterException bekomme, schreibe ich ein static bei Variablen, die in Gefahr schweben, könnte diese Vorgehensweise Nachteile haben oder sowieso unsinnig sein?
Nein, bloß nicht! Das ist in jedem Fall völliger Unsinn.

Die meisten Fehler eliminiert man, wenn man sich an einen Vernünftige Programmierstil hält - in diesem Fall zB ist die Variable unnötig, weil du auch einfach die Methode aufrufen kannst, wenn du sie brauchst.

Static solltest du vermeiden, das führt häufig zu mehr Problemen, als es löst.


Wenn du in Zukuft eine NPE bekommst: entweder ist das so trivial, dass man es auf den ersten Blick sieht, sonst Debugger anwerfen.
 

scratchy1

Bekanntes Mitglied
Ok, danke jetzt habe ichs. Ich habe die unnötige Variable eliminiert. Ich hätte sonst alle Objekte im Array initialisieren müssen, ich weiss gerade nicht, wie ich das angestellt bekommen könnt.
 

scratchy1

Bekanntes Mitglied
Ich hab mal gelesen, dass eine typische Ursache für NullPointerExceptions ist, dass zwar ein Array erzeugt wird, seine Elemente jedoch nicht initialisiert wurden. Falls das hier nicht zutrifft, dann liege ich falsch, d.h. die Array-Elemente, die man bekommt, wenn man EWochentag2.values() ausführt, sind vielleicht schon initialisiert.
 

mihe7

Top Contributor
Ich hab mal gelesen, dass eine typische Ursache für NullPointerExceptions ist, dass zwar ein Array erzeugt wird, seine Elemente jedoch nicht initialisiert wurden. Falls das hier nicht zutrifft, dann liege ich falsch, d.h. die Array-Elemente, die man bekommt, wenn man EWochentag2.values() ausführt, sind vielleicht schon initialisiert.
Alles richtig, es geht hier um ein Array, für dessen Erzeugung und Initialisierung Du nicht verantwortlich bist. Du kannst nur den Zeitpunkt des Zugriffs auf dieses Array beeinflussen.

Wenn wir mal von dem Array weggehen: Dein Code hat während der Initialisierung der Aufzählung versucht, die Aufzählung zu verwenden. Etwas halb-fertiges zu verwenden, kann eben zu unschönen Fehlern führen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
C Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 10
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
berserkerdq2 Nullpointerexception, obwohl ich Array initialisiere? Java Basics - Anfänger-Themen 1
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
Jose05 Nullpointerexception Java Basics - Anfänger-Themen 7
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
H Java NullPointerException Java Basics - Anfänger-Themen 4
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
L Threads Komischer NullPointerException Java Basics - Anfänger-Themen 2
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
D NullPointerException in foreach loop Java Basics - Anfänger-Themen 1
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
D NullPointerException im Array Java Basics - Anfänger-Themen 4
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
V NullPointerException Java Basics - Anfänger-Themen 2
S NullPointerException während ResultSet Java Basics - Anfänger-Themen 7
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
W Optional<T> - NullPointerException Java Basics - Anfänger-Themen 37
Jascha NullPointerException vs NumberFormatException Java Basics - Anfänger-Themen 5
L Variablen NullPointerException bei Dateigröße (Nr.1) Java Basics - Anfänger-Themen 4
M Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 13
D NullPointerException umgehen Java Basics - Anfänger-Themen 17
Z Objekt Array führt zum NullPointerException Java Basics - Anfänger-Themen 2
W NullPointerException obwohl nicht null? Java Basics - Anfänger-Themen 3
W ArrayList NullPointerException Java Basics - Anfänger-Themen 4
A NullPointerException Java Basics - Anfänger-Themen 6
S NullPointerException Java Basics - Anfänger-Themen 4
T OOP Wörterbuch NullPointerException Java Basics - Anfänger-Themen 4
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
O NullPointerException Java Basics - Anfänger-Themen 2
M Interpreter-Fehler Feld NullPointerException Java Basics - Anfänger-Themen 4
L Variablen Unerklärliche NullPointerException Java Basics - Anfänger-Themen 2
E Compiler-Fehler nullPointerException in verschachteltem Modell Java Basics - Anfänger-Themen 6
DaCrazyJavaExpert Threads NullPointerException Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
kodela NullPointerException Java Basics - Anfänger-Themen 12
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
H NullPointerException obwohl Objekt angelegt wurde Java Basics - Anfänger-Themen 1
A Threads Reentrantlock | NullpointerException möglicher Deadlock? Java Basics - Anfänger-Themen 0
K Compiler-Fehler NullPointerException lösen Java Basics - Anfänger-Themen 16
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
P Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 1
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
S Methoden Methode funktioniert nicht | NullPointerException Java Basics - Anfänger-Themen 6
F NullpointerException bei zweidimensionalem Array Java Basics - Anfänger-Themen 2
Z OOP - Array ständig NullPointerException Java Basics - Anfänger-Themen 4
J Verstehe die NullPointerException nicht Java Basics - Anfänger-Themen 1
T Nullpointerexception und es wird nichts angezeigt Java Basics - Anfänger-Themen 15
H NullPointerException, aber wieso? Java Basics - Anfänger-Themen 5
B ProcessMessage NullPointerException Java Basics - Anfänger-Themen 11
shiroX Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 9
MrSnake ItemListener mit NullPointerException Java Basics - Anfänger-Themen 3
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
M NullPointerException Java Basics - Anfänger-Themen 8
B Vererbung NullPointerException Java Basics - Anfänger-Themen 38
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
G NullPointerException Java Basics - Anfänger-Themen 1
J NullpointerException Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Nullpointerexception trotz Ordentlicher Initialisierung Java Basics - Anfänger-Themen 4
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
D Java Fehler: NullPointerException Java Basics - Anfänger-Themen 1
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
X Problem mit NullPointerException Java Basics - Anfänger-Themen 2
K NullPointerException in der Hashtable Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Hilfestellung bei einer NullPointerException Java Basics - Anfänger-Themen 1
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
L NullPointerException Java Basics - Anfänger-Themen 11
M Nullpointerexception??? Java Basics - Anfänger-Themen 2
W NullPointerException bei DefaultListModel Java Basics - Anfänger-Themen 5
N NullPointerException bei Konsolenausgabe Java Basics - Anfänger-Themen 5
J Klasse in Klasse; NullPointerException Java Basics - Anfänger-Themen 8
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
Q NullPointerException Java Basics - Anfänger-Themen 5
H NullPointerException Java Basics - Anfänger-Themen 5
T Threads MultiThreading NullPointerException Java Basics - Anfänger-Themen 7
K NullPointerException wird geworfen, bitte um Hilfe! Java Basics - Anfänger-Themen 7
O Objekt weitergeben Meth Class NullPointerException Java Basics - Anfänger-Themen 2
J Char-Array - NullPointerException Java Basics - Anfänger-Themen 3
M Compiler-Fehler Java suckt - java.lang.NullPointerException Java Basics - Anfänger-Themen 12
S Array wird nicht übernommen NullPointerException Java Basics - Anfänger-Themen 6
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
L Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 2
H Compiler-Fehler NullPointerException bei .length, Konstruktor fehlerhaft? Java Basics - Anfänger-Themen 3
B JRadioButton wechsel gibt NullPointerException Java Basics - Anfänger-Themen 2
L NullPointerException lösen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben