# Prüfen, ob Instanz existiert



## flooo (1. Apr 2005)

Hallo,

wie kann ich, ganz allgemein, überprüfen, ob eine bestimme Instanz eines Objekts existiert?

Danke!


----------



## Snape (1. Apr 2005)

if ( instanz != null )


----------



## stev.glasow (1. Apr 2005)

if(x != null){

}

Oder was meinst du?


----------



## flooo (1. Apr 2005)

Geht das auch bei Variablen? Nach der Methode kommt dann ein Compilerfehler, "variable may not have been initialized", was ja irgendwie das ist, was ich überprüfen möchte. 
Eine Methode wird mehrfach gerufen, aber es soll nur einmal ein Stack erzeugt werden, auf den dann bei jedem Aufruf ein Objekt abgelegt wird. Dachte eigentlich, ich hätte dann Stack Objekte, und keine Variablen. Bin Methoden auf Variablen nicht gewöhnt


----------



## Sky (1. Apr 2005)

Wenn der Fehler schon beim Übersetzen kommt, so bedeutet das, dass deine Variable initialisiert werden muss, damit das Prog. übersetzt werden kann.


```
public void doSomething() {
  int i1; // Fehler
  int i2 = 0; // ok

  String s1; // Fehler
  String s2 = null; // ok
  String s3 = new String(); // ok
}
```


----------



## Guest (1. Apr 2005)

Ah, ich hatte bisher


```
Stack var;
if(var == null){
}
```

Da hat das "=null" gefehlt :>


Danke für die extrem schnelle Hilfe!!


----------



## Sky (1. Apr 2005)

Anonymous hat gesagt.:
			
		

> Ah, ich hatte bisher
> 
> 
> ```
> ...



Was hast Du denn vor? Denn dein Code erscheint auf den ersten Blick wenig sinnvoll! Denn wenn Du sagst 

```
Stack var = null;
```
dann bekommst Du für 

```
if(var == null){
}
```
 immer true!


----------



## stev.glasow (1. Apr 2005)

Ich glaub das war nur zur Veranschaulichung, da fehlen bestimmt noch ein paar Zeilen.


----------



## AlArenal (1. Apr 2005)

Vielleicht macht er ein lazy init?


----------



## Guest (1. Apr 2005)

Hehe, da fehlen in der Tat Zeilen.


```
Stack var = null;
if(var == null){
var = new Stack();
}
```

So macht's schon mehr Sinn. Oder sollte man sowas generell anders lösen? Ist eine Methode in einer Schnittstelle, die ein oder mehrmals gerufen wird.


----------



## stev.glasow (1. Apr 2005)

Dann mach doch gleich Stack var = new Stack(); 
var ist in zeile 3  eh immer null.


----------



## Guest (1. Apr 2005)

stevg hat gesagt.:
			
		

> Dann mach doch gleich Stack var = new Stack();
> var ist in zeile 3  eh immer null.



Aber die Methode wird mehrmals gerufen, und ich will nicht jedes mal einen neuen Stack erzeugen, sondern den Alten benutzen. Und da muss ich ja zuerst überprüfen, ob es einen alten gibt. Oder denke ich zu kompliziert? :>


----------



## mic_checker (1. Apr 2005)

Wenn das in deiner Methode so steht und die wird mehrmals aufgerufen, dann erzeugst du auch so immer neue Objekte.

Wenn du den Stack woanders deklarierst, dann ist es gut...


----------



## stev.glasow (1. Apr 2005)

Das wirds so nicht gehen:

```
public void foo(){ 
  Stack var = null;
  if(var == null){
  var = new Stack();
}
```
Das Stackobjekt ist so nur für einen durchgang gültig, sprich wenn das ende der Methode erreicht istm wird das Objekt "entfernt" und wenn du die Methode dann wieder aufruftst wird ein neues angelegt. Lösung des Problems: mach var als Instanzvaribale. Nicht klar? dann schau mal hier: http://www.java-forum.org/de/javabuch/html/k100025.html


----------



## Guest (1. Apr 2005)

stevg hat gesagt.:
			
		

> Das wirds so nicht gehen:
> 
> ```
> public void foo(){
> ...



Das ist mir nun auch aufgefallen   
Danke noch mal für die gute Hilfe!!


----------

