# Objekte auf Null setzen



## Corcovado (24. Mrz 2005)

Hallo, 
ich hab mal die daemliche Frage, wie man denn eigentlich stilgerecht Objekte deklariert.
Soll ich Objekte generell auf "null" setzen (und warum?) oder sollte ich das nur bei bestimmten Objekten machen?
Danke

```
public class MyClass{

public String;    // soll ich das hier schon auf "" setzen oder erst im Konstruktor, oder erst, wenn ichs brauche (evtl lazy evaluation?)??
private MyObject;  // macht das Sinn sowas hier schon auf "null" zu setzen?
private File;    // File is ne Klass in der API, sollte ich die hier auf "null" setzen?
...   // macht es einen Unterschied zwischen public oder private?
}
```

Fragen ueber Fragen...


----------



## Roar (24. Mrz 2005)

oO
alle deine objektvariablen werden autoamtisch auf null gesetzt, alle dantetypen auf 0, somit ist ein explizites auf-null-setzen nicht nötig. nötig wirds nur dann bei lokalen variablen und der compilier meckert XXX might have not been initialized oder so, aber das is bei klassenvariablen eh egal.


----------



## AlArenal (24. Mrz 2005)

Man setzt Objekte in der Deklaration auf null, wenn dies als Default-Wert braucht, um später in einer Methode eine Bedingung zu prüfen. So prüfe ich in einer Methode zunächst, ob ein Objekt != null ist, um zu sehen, ob ich damit überhaupt arbeiten kann und es richtig initialisiert wurde. Andernfalls hagelt es nämlich Exceptions.

Weitere Einsatzmöglichkeit ist Lazy Initialisation. Durch die Prüfung auf null kann ich für klasseninterne Objekt prüfen, ob diese bereits initialisiert wurden und dies erst dann machen, wenn sie zum ersten Mal benutzt werden. Das wirkt sich auf die Laufzeit unter Umständen drastisch positiv aus.

Für Objekte, die ich auf jeden Fall vor ihrer ersten Verwendung mit Werten initialisiere, brauche ich vorher kein null. Dazu zählen Objekte, die in jedem Fall z.B. über den Konstruktor gesetzt werden.


----------



## Corcovado (24. Mrz 2005)

...wie komfortabel - Danke.


----------



## AlArenal (24. Mrz 2005)

Roar hat gesagt.:
			
		

> alle deine objektvariablen werden autoamtisch auf null gesetzt, alle dantetypen auf 0, somit ist ein explizites auf-null-setzen nicht nötig.



Sicher? *überleg*

Ist mir nie aufgefallen.. Man lernt nie aus..


----------



## Snape (24. Mrz 2005)

AlArenal hat gesagt.:
			
		

> Roar hat gesagt.:
> 
> 
> 
> ...



Das gilt nur für Instanzvariablen, nicht für lokale in Methoden.


----------



## Roar (24. Mrz 2005)

Roar hat gesagt.:
			
		

> nötig wirds nur dann bei lokalen variablen /quote]
> :roll:


----------

