auf LinkedList von aussen zugreifen

macsx

Mitglied
Sers!

Ich hab folgendes Problem: der Code stammt aus nem Java-Chat und das läuft auch alles recht glatt! Nur von aussen kann ich nicht auf die LinkedList(threadLink) zugreifen. Also z.B. aus einer Klasse heraus: System.out.println(obj.threadList.size(); In dem Moment erzeugt er scheinbar eine neue LinkedList, die dann natürlich leer ist. Ich brauche aber den Inhalt der LinkedList dieser Klasse!

Code:
public void run() {
       while(true) {
        try {
            socket = serverSocket.accept();
            System.out.println("Verbindung zu Socket "+socket.getRemoteSocketAddress()+
                    " aufgenommen");
            clientThread = new ClientThread(socket, this);
            threadList.add(clientThread);  //hier wird der LinkedListe ein Objekt eingefügt
            System.out.println(threadList.size());  //so funktionierts zwar, aber ich brauche einen Aufruf ausserhalb dieser Methode!
           
            Thread thread = new Thread(clientThread, clientThread.getThreadName());
            thread.start();          
        } catch (IOException ioe) {
            System.out.println(ioe.toString());
           
        }}}

Danke im Voraus!
 
Hallo,

Code:
obj.threadList.size()
In diesem Moment wird sicherlich keine neue Liste erzeugt.

Vielleicht könntest du mal die ganze Klasse posten. Wenn keine Getter angelegt sind und die Variable private ist, soll man vielleicht gar nicht auf die Liste zugeifen.

Wenn es eine Klassenvariable ist, dann kannst du aber noch per Reflection drauf zugreifen.
Wenn die ChatKlasse deine eigene Klasse ist, könntest du sie doch einfach mit einer Getter-Methode verfügbar machen.


MFG

zEriX
 
Sers nomma!

Der Gedankeanstoss mit den Gettern, der hats gebracht! Schon peinlich, dass mir das nicht selber einfällt! :suspekt:

Das Problem war folgendes: Klasse A hat die Liste initialisiert und sie mit Objekten der Klasse B vollgestopft. Klasse C wollte über eine Referenz von Klasse A auf diese Objekte zugreifen. Damit bekommt Klasse C aber eine neue Liste, weil sie im Konstruktor der Klasse A neu initialisiert wird! (die dann natürlich leer sein muss!) Habs nun halt ausgelagert.

So.. jetzt muss ich mir erstma nen Tee kochen!:-)

Falls es wen interessiert:

Code:
public class List {
    
    LinkedList list = new LinkedList();
    ClientThread client = new ClientThread();
    
    public void add(ClientThread client) {
        list.add(client);
        
    }
    
    public LinkedList getList() {
        return list;
    }
      
    public void remove(ClientThread client) {
        list.remove(client);
        
    }
    
    public int getAnzahl() {
        return list.size();
    }

   
}
 
Zurück