2010-12-09 8 views
4

Je crée un thread dans ma classe principale. Le thread dispose d'une minuterie qui écrit et lit sur un socket.Accès à un objet créé dans une autre classe

Je dois appeler une méthode dans la classe de thread, par exemple writeSomething() d'une autre classe en dehors de l'endroit où elle a été déclarée (Main).

Comment l'objet est-il référencé à partir d'une autre classe?

Modifier

public static Thread connectionThread; 

ModelJTable table = new ModelJTable(); 
connectionThread = new Thread(new ConnectionThread(table), "connectionThread"); 
connectionThread.start(); 

J'ai une méthode dans la classe de fil

public void openFile(String fileName){ 
    String request = "open;" + fileName; 
    out.print(request); 
} 

Je veux accéder si d'une autre classe (la classe JTable)

String open = "open;" + getname + ";" + getpath; 
// This doesnt work 
ConnectionThread.openFile(open); 

Cette appel donne une erreur

Aucun exemple renfermant du type ConnectionThread est accessible en portée

+0

Vous avez juste besoin d'appeler la méthode ou avez-vous besoin d'appeler la méthode de cette instance spécifique de la classe? –

+0

Eh bien, j'ai un thread qui a une connexion socket, et un lecteur buffered et printwriter pour le flux. J'ai simplement besoin de faire écrire un message au socket. Le message que je crée ailleurs et que je veux appeler la méthode thread de cette classe.Si je viens d'appeler la méthode, et la méthode écrit à l'éditeur créé, un appel sera suffisant (pas à un objet spécifique) – jarryd

+0

avez-vous essayer de mettre en œuvre ma réponse? –

Répondre

8

Soit passer dans le constructeur de deuxième classe ou le rendre statique dans la première classe, OR sérialiser

voie 1: static un

Class A{ 
public static int a=0; 
} 

Class B{ 
public void someMethod(){ 
A.a = 10; 
} 
} 
+0

ou utiliser une méthode accesseur (getter) – RoflcoptrException

+0

@alJaree Vérifier la mise à jour, et la prochaine fois que vous commentez s'il vous plaît assurez-vous d'écrire @ org.life.java sans espace après @ –

+0

J'ai refait le commentaire. Est-ce pour la fonctionnalité de recherche? – jarryd

0

Transmettez une référence au thread à la classe qui doit appeler la méthode.

+0

Si je crée le fil dans le principal. Thread connectionThread = nouveau bla bla, devrais-je juste avoir ce qui suit dans la classe appelante Thread connectionThread; ? ou qu'est-ce que tu veux dire par passe? – jarryd

+0

Transmettre une référence à connectionThread à la classe appelante. – jzd

+0

@alJaree Comme dans myObj = new myClass (connectionThread) –