Dies sind die Hauptfaktoren:
- Mitgliedsvariable (Standard OK)
- statische Variable (Standard OK)
- letzte Mitgliedsvariable (nicht initialisiert, muss auf Konstruktor gesetzt werden)
- letzte statische Variable (nicht initialisiert, muss auf einen statischen Block gesetzt werden {})
- lokale Variable (nicht initialisiert)
Hinweis 1: Sie müssen die endgültigen Elementvariablen auf JEDEM implementierten Konstruktor initialisieren!
Hinweis 2: Sie müssen die endgültigen Elementvariablen im Block des Konstruktors selbst initialisieren und dürfen keine andere Methode aufrufen, die sie initialisiert. Dies ist beispielsweise NICHT gültig:
private final int memberVar;
public Foo() {
init();
}
private void init() {
memberVar = 10;
}
Hinweis 3: Arrays sind Objekte in Java, auch wenn sie Grundelemente speichern.
Hinweis 4: Wenn Sie ein Array initialisieren, werden alle seine Elemente auf Standard gesetzt, unabhängig davon, ob Sie Mitglied oder lokales Array sind.
Ich füge ein Codebeispiel bei und präsentiere die oben genannten Fälle:
public class Foo {
private int a;
private static int b;
private Object c;
private static Object d;
private int[] e;
private static int[] f;
private final int g;
private final static int h;
private final Object i;
private final static Object j;
private final int[] k;
private final static int[] l;
static {
h = 5;
j = new Object();
l = new int[5];
}
public Foo() {
g = 10;
i = new Object();
k = new int[10];
}
public Foo(boolean aBoolean) {
g = 15;
i = new Object();
k = new int[15];
}
public static void main(String[] args) {
int m;
Object n;
int[] o;
m = 20;
n = new Object();
o = new int[20];
}
}