Gabi und Sascha
Tags - Kategorien : Alle | Berlin | Bücher | Fotografie | Java | Linkhalde | Weichware | Verfassung

Beim Code-Review heute ist mir ein Java-Konstrukt aufgefallen, welches ich so noch nicht kannte: Ein final-Variable wird deklariert. In der nächsten Zeile wird dann ein Wert zugewiesen. Bisher bin ich nie auf die Idee gekommen soetwas zu probieren. Deswegen wunderte ich mich, dass ein solches Konstrukt funktioniert. Einen Sinn kann ich darin auch nicht sehen. Initialisieren einer deklarierten Variable in einem Block und ein weiterverwenden nach dem Block ist nur bei if-Konstrukten möglich. Bei einem try-catch-Block ist es nicht möglich.

Funktioniert:


    final String test;
    test = "true";
  

Funktioniert:


    final String test;
    if (true) {
        test = "true";
    } else {
        test = "false";
    }
    System.out.println("value: " + test);
  

Funktioniert nicht:


    final String test;
    for (int i = 0; i < 1; i++) {
        if (true) {
            test = "true";
        } else {
            test = "false";
        }
    }
    System.out.println("value: " + test);
  

Funktioniert nicht:


    final InputStream in;
    try {
        in = new FileInputStream("/etc/passwd");
    } catch (final FileNotFoundException e) {
        ;
    }
    in.close();
  

Funktioniert:


    final String test;
    final int i = 1;
    switch (i) {
        case 1:
            test = "true";
            break;
        default:
            test = "false";
    }
    test.toString();
  

Funktioniert nicht:


    final String test;
    final int i = 1;
    switch (i) {
        case 1:
            test = "true";
            break;
    }
    test.toString();
  

Muss mal wieder einen Blick in die Sprachspezifikation werfen.