# Objekt öffnen von einer anderen Klasse öffnen



## Guest (22. Mrz 2007)

Hallo miteinander

Ich habe eine Main Klasse, ein Thread und ein Objekt in welchem die Daten gespeichert werden.

Folgendes ist das Objekt:




```
public class SaveResult {

String name; // Objekt Name

   public SaveResult(String name) {
     this.name=name;
   }

   private void method() {
      blabala
  }
}
```


dieses Objekt wird im Thread eröffnet

```
SaveResult saveResult = new SaveResult("SaveData");
```

nun möchte ich aus diesem Objekt in der Main Klasse auslesen.

Wie kann ich dieses Objekt ansprechen?
Könnt ihr mir da helfen??

Gruss


----------



## SlaterB (22. Mrz 2007)

thread.getObject();


bzw. sonst irgendwie von irgendjemanden ein Objekt bekommen,
das ist doch so elementar in Java, was kann man dazu sagen?

Objekte sind in Variablen enthalten, auf die man entweder direkt zugreift 
oder Objekte in anderen Variablen um Weiterreichung bittet (getXY())


und pass allgemein auf, dass die main nicht schneller ist als der Thread


----------



## Guest (22. Mrz 2007)

Ich bin mir nicht ganz sicher, ob du mich richtig verstanden hast.

Denn ich weiss immer noch nicht genau wie ich in der Main Klasse dieses Objekt auslesen kann.

wie ist es mir Möglich dieses Objekt anzusprechen??


mit

```
SaveResult saveResult = new SaveResult("saveResult");
```

wird ja ein neues objekt erstellt also müsste ich irgendwie das objekt auslesen können?

Wie könnte ich dann alle Objekte SaveResult anzeigen lassen, falls mehrere Vorhanden sind??


----------



## Leroy42 (22. Mrz 2007)

```
SaveResult saveResult = new SaveResult("saveResult");
```

Wenn du das geschrieben hast kannst du doch unmittelbar auf
die Member des Objekts zugreifen:

```
saveResult.method();
System.out.println(saveResult.name);
```



			
				Anonymous hat gesagt.:
			
		

> Wie könnte ich dann alle Objekte SaveResult anzeigen lassen, falls mehrere Vorhanden sind??



Du speicherst die verschiedenen SaveResult-Objekte in einen Array
(oder Vector, ArrayList, ...)


----------



## mikachu (22. Mrz 2007)

Ein Objekt ist nur in dem Range erhalten, in dem es deklariert wurde...

Wenn es erst im Thread deklariert wird, ist es auch nur solange am leben, wie lange der Thread läuft.


----------



## Guest (22. Mrz 2007)

ah ok, 
habe es jetzt so gelösst das es in der Main Klasse erstellt wird, und dann als Parameter im Konstruktor dem Thread übergeben wird, 

es gibt in demfall keine schönere lösung?


----------



## SlaterB (22. Mrz 2007)

schön ist relativ, man weiß ja noch nicht mal was du haben willst,
mein Beispiel ist nun fertig programmiert, da will ich es dir nicht vorenthalten,

und @mika (so komplizierte Namen schreibe ich nicht aus  )
wenn ein Objekt lokal in der run-Operation deklariert ist, dann ist es doch eh nicht außen sichtbar,
wenn es allerdings nach außen weitergereicht wird, 
dann ist es potentiell auch länger am Leben, 
so lange wie jemand eine Referenz daruf hält

falls du Exemplarvariablen meinst: ein Thread ist nach Ablauf der Run-Operation gestoppt, aber immer noch ein normales Objekt,
das nciht verschwindet oder seine Exemplarvariablen verliert


-------


```
public class Test implements Runnable
{
        
        private String st;
        
        public Test() {
            new Thread(this).start();
        }

        public void run()
        {
            System.out.println("Test faengt an");
            try
            {
                Thread.sleep(1000);
                System.out.println("Test setzt String");
                this.st = "Hello World";
                Thread.sleep(10000);
            }
            catch (InterruptedException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("Test fertig");
        }
        
        public String getString() {
            return this.st;
        }

    public static void main(String[] args)
        throws Exception

    {
        Test t = new Test();
        System.out.println("String in main 1: "+t.getString());
        
        Thread.sleep(3000);
        System.out.println("String in main 2: "+t.getString());
    }
}
```


----------

