Statischer Initializer

ioannis_m

Mitglied
Guten Abend zusammen,

Java:
import java.util.ArrayList;
import java.util.List;

public class Kinder_STATIC {
    static int anzahlKinder;
    String[] kinder = new String[anzahlKinder];
   
   
    static{
        Eltern eltern = new Eltern(anzahlKinder);
    }
    static void main(String args[]){
        anzahlKinder = 4;
        Kinder_STATIC gruppe1 = new Kinder_STATIC();
         gruppe1.kinder[0] = "Helena";
        gruppe1.kinder[1] = "Maria";
         gruppe1.kinder[2] = "Niki";
        gruppe1.kinder[3] = "Artemis";

        eltern.getAnzahlKinder();    // wird von eclipse nicht erkannt
    }
}

Java:
public class Eltern {
    int anzahlKinder;
   
    Eltern(int anzahlKinder){
        this.anzahlKinder = anzahlKinder;
    }
   
    int getAnzahlKinder(){
        return anzahlKinder;
    }
}

Die Variable eltern im statischen Inializer wird in der main() nicht erkannt. Vielleicht kennt jemand den Grund?

Danke & Gruß
ioannis
 
X

Xyz1

Gast
ich muss leider fragen, ob du weißt, was ein static initializer ist...
Vielleicht schon in C++ über den Weg gelaufen? :)

Bearbeitung: @ioannis_m meine ich damit
 

ioannis_m

Mitglied
Hmm, eher nicht ganz. Ich dachte das war eine Möglichkeit immer ein Eltern Objekt zu haben (bevor das erste Kind Objekt entsteht).

Was ist dann der Sinn, wenn sie außerhalb des Blocks nicht sichtbar ist?
 

stg

Top Contributor
Was ist dann der Sinn, wenn sie außerhalb des Blocks nicht sichtbar ist?
Dein Code-Schnipsel da ist recht sinnfrei. Das liegt aber daran, wie du die einzelnen Bausteine der Programmiersprache verwendest.

Um zu verstehen, wann ein static initializer sinnvoll ist, mach dir klar, wann der darin stehende Code ausgeführt wird. Siehe dzau z.B. hier: http://stackoverflow.com/a/21923347/1803294
Es gibt nur relativ wenige Fälle, in denen ein static initializer wirklich sinnvoll und notwendig ist. Fängt man gerade erst an zu programmieren, dann gibt es da eigentlich keine.

Das Problem mit der Sichtbarkeit hat aber nicht speziell was mit dem static initialzer zu tun. Wenn du eine Variable beispielsweise innerhalb einer Methode deklariest, so ist diese außerhalb der Methode ja auch nicht sichtbar. Wenn die Variable außerhalb des Codeblock sichtbar sein soll, dann muss sie auch außerhalb deklariert werden.

Java:
public class Foo {
    static Eltern eltern;   
    static {
        eltern = new Eltern();
    }

In deinem konkreten Fall sollte aber vermutlich weder Eltern noch anzahlKinder überhaupt static sein. Überleg am besten nochmal ganz von vorne, wie du deine Familie modellieren könntest.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
H Polymorphie Interfaces und statischer Typ Java Basics - Anfänger-Themen 33
C Statischer Typ aber Variable nicht statisch? Java Basics - Anfänger-Themen 5
O Statischer und Dynamischer Typ Java Basics - Anfänger-Themen 6
L Polymorphie Dynamischer oder Statischer Typ für Methodenparameter Java Basics - Anfänger-Themen 8
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
T Unterschied dynamischer und statischer Laufzeittyp Java Basics - Anfänger-Themen 1
kilopack15 this.v mit statischer Variable v? Java Basics - Anfänger-Themen 1
M Input/Output tcp-Server mit statischer Parallelität Java Basics - Anfänger-Themen 7
W If_Bedingung in statischer Methode beim zweiten Mal nicht durchlaufen Java Basics - Anfänger-Themen 14
N Initialisierer / statischer Initialisierer verstehen Java Basics - Anfänger-Themen 6
W Dynamischer und statischer Typ von Referenzvariablen Java Basics - Anfänger-Themen 13
C Methoden Rückgabewert von statischer Methode ignorieren Java Basics - Anfänger-Themen 8
N ArrayList verwenden in statischer Methode Java Basics - Anfänger-Themen 2
R Frage zu statischer Methode toString() Java Basics - Anfänger-Themen 3
Luk10 Problem mit Singleton bzw statischer Referenz! Java Basics - Anfänger-Themen 16
C Seitenwechsel in statischer Methode? Java Basics - Anfänger-Themen 6
P Statischer Import - ich raffs nicht! Java Basics - Anfänger-Themen 3
H Unterschied statischer/dynamische Typ einer Variablen Java Basics - Anfänger-Themen 2
H statischer Zugriff / accessed in a static way Java Basics - Anfänger-Themen 3
Paule Aufruf nicht statischer Methode in statischer MEthode Java Basics - Anfänger-Themen 7
D statischer Konstruktor Java Basics - Anfänger-Themen 9
G static Initializer Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben