# einmalige Initialisierung



## StrobeOriginal (17. Dez 2011)

Hallo,

ich habe eine Klasse "Start", in der ich die "main"-Funkt. aufrufe. In dieser Klasse initialisiere ich mein Interface "IPersistenz" und meine Klasse "Konfiguration".

Jetzt sollen diese beiden nur einmal am Anfang initialisiert werden.

Wie kann ich damit dann in anderen Klassen arbeiten, ohne sie erneut darin initialiseren zu müssen, ohne das ich eine "NullPointerException" bekomme??? ???:L

Danke im Voraus !!!!


----------



## Marcinek (17. Dez 2011)

Siehe: Singleton, Dependency Injection, Referenzen, statics


----------



## StrobeOriginal (17. Dez 2011)

also Singleton darf ich nicht benutzen

static ist auch verboten (fragt mich nicht warum...gibt jedenfalls abzug in der b-note  )

nehmen wir mal die referenzen, wie kann ich den, wenn ich zum anfang einmal die "konfiguration" initialisiere, diese weitergeben...hab jetzt schon viele versucht, bekomme aber immer die "NullPointerException" ???:L


----------



## Gast2 (17. Dez 2011)

```
Configuration config = new DefaultConfiguration();

KlasseA a = new KlasseA(config);
KlasseB b = new KlasseB(config);
...
```
KlasseA und KlasseB müssen die Referenz auf Configuration dann als Instanzvariable speichern.


----------



## StrobeOriginal (17. Dez 2011)

```
public class Start {
	
	private Hauptfenster  hauptfenster;
	private Konfiguration konfiguration;
	private IPersistenz   iPer;
	
	private Start() {
		konfiguration = new Konfiguration();
		iPer		  = new Persistenz(konfiguration);
		iPer.ladeKonfig();
	}
	
	public Konfiguration getKonfiguration() {
		return konfiguration;
	}
	
	public IPersistenz getPersistenz() {
		return iPer;
	}
	
	@SuppressWarnings("unused")
	private Hauptfenster getHauptfenster() {
		return hauptfenster;
	}
	
	private void ladeHauptfenster() {
		hauptfenster = new Hauptfenster();
	}
	
	public static void main(String[] args) {
		
		Start start = new Start();
		start.ladeHauptfenster();
	}
}
```

und die konfiguration will ich überall in den anderen klassen nutzen ohne sie mit "new" zu istanziieren


----------



## Gast2 (17. Dez 2011)

Ok, und was hast du jetzt an meinem Beispiel oben nicht verstanden?


----------



## StrobeOriginal (17. Dez 2011)

angenommen ich habe jetzt eine Klasse Test, wie genau bekomm ich da jetzt die referenz von konfiguration hinein?


----------



## Gast2 (17. Dez 2011)

Indem du das hier:

```
Configuration config = new DefaultConfiguration();
 
KlasseA a = new KlasseA(config);
```
in das hier änderst:

```
Configuration config = new DefaultConfiguration();

Test a = new Test(config);
```

Du übergibst doch Persistenz auch schon ne Referenz auf deine Konfiguration, so kannst du das doch mit jeder beliebigen Klasse machen.


----------

