String[] initialisieren

Java:
 class formular extends Thread{
private String[] ueberschriften;
        formular() {      
            this.ueberschriften = { "Name:", "Vorname:", "Straße:", "PLZ:", "Ort:", "Geburtsdatum:", "Familienstand:", "TelefonNr.:",  
                                  "HandyNr.:", "FaxNr.:", "HandyNr.:", "E-Mail:" };
Java:
classes
D:\Programme\JAVA-PROJEKTE\0mGTeh1337Haxx0rProject\src\TCP\clientside.java:879: illegal start of expression
            this.ueberschriften = { "Name:", "Vorname:", "Straße:", "PLZ:", "Ort:", "Geburtsdatum:", "Familienstand:", "TelefonNr.:"
D:\Programme\JAVA-PROJEKTE\0mGTeh1337Haxx0rProject\src\TCP\clientside.java:879: not a statement
            this.ueberschriften = { "Name:", "Vorname:", "Straße:", "PLZ:", "Ort:", "Geburtsdatum:", "Familienstand:", "TelefonNr.:"
D:\Programme\JAVA-PROJEKTE\0mGTeh1337Haxx0rProject\src\TCP\clientside.java:879: ';' expected
            this.ueberschriften = { "Name:", "Vorname:", "Straße:", "PLZ:", "Ort:", "Geburtsdatum:", "Familienstand:", "TelefonNr.:"
3 errors
BUILD FAILED (total time: 0 seconds)

Ähm ... seit wann kann man keine Arrays mehr direkt initialisieren?
Bin ich blöd? ? Wo is der Fehler?
 
Moin!

Also entweder:
Code:
String[] tmp = {"a","b"};

oder

Code:
String[] tmp = null;
tmp = new String[]{"a","b"};

*grüssle*
MeinerEiner
 
ich hab das array jetzt direkt bei der Erstellung mit Elementen gefüllt .... ich finds zwar äusserst seltsam, dass hier
Java:
String[] tmp; tmp = {"bla", "blub"};
nicht funktioniert, aber ... Hey! Wayne! :)
 
Hallo,

Der Java Kompilier gibt einen Fehler aus, wenn eine lokale Variable vor ihrer Verwendung nicht initialisiert wurde.
Ein String local; ist nur eine Deklaration einer lokalen Variablen aber keine Initialisierung.
Membervariablen werden bei der Deklaration automatisch mit ihren default Werten initialisiert.

Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Thomas.Darimont
 * 
 */
public class LocalsInitializationExample {

    /**
     * @param args
     */
    public static void main(String[] args){
        String local; //Deklaration
        //if(args.length < 10){
            local = "bubu"; // Initialisierung
        //}
        System.out.println(local); //Verwendung
    }

}

Der Kompilier führt während der Kompilierung eine Datenflussanalyse durch um zu sehen ob eine lokale Variable vor ihrer ersten Verwendung initialisiert wird.
Lässt man in diesem Beispiel die Kommentare weg, so erkennt der Kompilier, dass die lokale Variable local in dem Fall, dass args.length > 9 ist vor ihrer Verwendung möglicherweise nicht initialisiert ist und gibt eine entsprechende Fehlermeldung aus.

Gruß Tom
 
das is klar .... Aber ich will meine Variable im Konstruktor initialisieren (genauso wie du im Beispiel), eine vorzeitige Verwendung kommt hier garnicht in Frage ... warum geht das nicht?

Warum muss ich in meinem Beispiel Deklaration und Initialisierung gleichzeitig vornehmen, damit alles kompiliert werden kann?
 
Zuletzt bearbeitet:
Hallo,

warum machst du nicht einfach
Java:
String[] tmp = null; 

tmp = {"bla", "blub"};

MFG

zEriX
 
Hallo,

diese Kurzform der nachträglichen Array-Initialisierung geht nur mit lokalen Variablen und dann unter den genannten Einschränkungen. "Direkt" kann man diese Kurzform der Array Initialisierung überall verwenden.

Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Thomas.Darimont
 * 
 */
public class LocalsInitializationExample {
    String[] works = {"a","b"};
    String[] worksAlso;
    String[] doesNotWork;
    
    public LocalsInitializationExample(){
        worksAlso = new String[]{"gugu"};
        String[] antoherWorkingExample = {"gaga"};
        doesNotWork = {"bubu"};
    }
}

Gruß Tom
 
Hast du schon ausprobiert ob folgendes geht?

Code:
class formular extends Thread
{
private String[] ueberschriften;        
formular() 
{                  
   this.ueberschriften = new String[] { 
                                                               "Name:", 
                                                               "Vorname:", 
                                                               "Straße:", 
                                                               "PLZ:", 
                                                               "Ort:", 
                                                               "Geburtsdatum:", 
                                                               "Familienstand:",
                                                               "TelefonNr.:",
                                                               "HandyNr.:", 
                                                               "FaxNr.:", 
                                                               "HandyNr.:", 
                                                               "E-Mail:" 
                                                             }; 
...

ich gebe zu es nicht ausprobiert zu haben, aber vielleicht geht das ja.
 

Neue Beiträge

Zurück