Variable non static depuis une méthode static,Php/Java bridge [Résolu] - Java - Programmation
Marsh Posté le 11-03-2008 à 13:49:25
par rapport à ton exemple de code, la notion de blocs est importante, et pas tout à fait comprite on dirait.
Sinon :
Code :
|
Marsh Posté le 11-03-2008 à 13:55:44
Oui il y a un mécanisme qui permet de faire ce que tu demandes.
Ça s'appelle le passage de paramètres...
Code :
|
EDIT : Grilled
En gros tu as 2 possibilités, soit tu rends ton objet visible de l'extérieur (via un accesseur getObj()), soit tu le transmets en tant que paramètre là où tu veux l'utiliser.
Marsh Posté le 11-03-2008 à 14:33:44
Hum hum, ok je complique le truc.
Ce que j'utilise, c'est PHP/Java Bridge. De ce que j'ai compris de ce truc, je rajoute 2 lignes de code dans ma classe Main de mon appli. Ca ouvre un socket permettant à Php d'exécuter des commandes Java. La manière dont je veux que Php intéragisse avec Java fait que mon appli est déjà lancée et je dois 'intercepter' depuis Php les objets crées en Java.
Une JVM lance l'appli Java. Elle continue à s'exécuter qd je recois une requete Php. Le script charge la classe principale de mon appli et je peux donc voir les attributs et méthode de cette classe. C'est mon seul point d'entrée à mon appli. Je dois donc pouvoir déclarer en tant qu'attribut tous objets qui est crée par ma classe Main. C'est là que ca bloque. J'ai besoin en fait d'avoir en qq sorte accès à tout ce qui a été crée/instancié par la JVM depuis le lancement de l'appli.
Pour exemple, un pti code java:
Code :
|
Et mon code php:
Code :
|
C'est pour ca que je voyais plus un truc du genre accéder depuis php à un arbre des références propre à la JVM, qui me stockerait les ref des objets créés depuis le lancement de l'application. Je sais pas si un truc pareil existe en fait.
Marsh Posté le 13-03-2008 à 15:09:05
Bon, j'ai pseudo-contourné mon problème. Je vous met ce que j'ai fais. Ca pourra toujours servir à d'autre.
En fait, j'ai fait une sorte de singleton.
Dans ma classe Main:
Code :
|
On remarque 2 instances de la classe MyInt. En fait, la fonction static getInstance() renvoi une instance sur l'objet déjà créé ou bien crée un nouvel objet si c'est son premier appel (cf code suivant). On a donc en fait objet et obj qui pointe vers le meme objet. Après faut faire gaffe à la synchro...
Vla ma classe MyInt:
Code :
|
On peut aussi utiliser la fonction getInstance de manière à gérer un pool d'objet pour pouvoir avoir un peu plus que 1 seul objet.
Depuis Php, je peux accéder de la même façon à mon objet crée depuis Java:
Code :
|
Bon voila, en tout cas, ca a résolu mon problème. Merci qd meme de m'avoir rappeler que je pouvais faire tout betement un passage de paramètre.
A bientot
Marsh Posté le 11-03-2008 à 13:27:55
Bonjour,
Voilà une petite question qui me glue depuis qq temps.
Considérons une application quelconque. On a la fonction 'main' de la classe 'Main', static bien entendu, et qui me crée un objet de type 'MaClass'. J'ai le choix entre en faire une variable de classe (static au Main) ou bien une variable locale à la méthode 'main'. Dans aucun des cas, cela ne m'arrange.
J'aimerais savoir s'il existe un moyen d'avoir accès à une variable qui ne serait pas static. En gros :
Depuis autre part que mon main, je veux connaitre la référence de l'objet que mon main a créé. Je me demande s'il existe en Java un espèce de mécanisme permettant d'accéder aux objets créés.
J'ai évidemment aussi un problème de portée. Si je veux pouvoir accéder à cet objet, il doit être déclaré en tant qu'attribut de ma classe 'Main' sans pour autant être static je pense.
Voilà, si vous m'avez compris, j'espère que vous pourrez m'aider ou me donner des pistes
Edit: du sujet, pour la recherche
Message édité par brolouille le 13-03-2008 à 15:11:27