2011-10-21 7 views
1

Je trouve qu'il est incroyablement difficile de comprendre comment différents objets doivent communiquer et échanger des informations. Venant du monde C/C++, j'ai l'habitude de passer des objets par référence quand j'ai besoin de donner un objet à une classe/fonction pour le traitement.Comment faire face à ne pas pouvoir passer par référence?

Je suis certain qu'il y a un modèle connu pour réaliser une manière propre et maintenable pour la communication d'objet. J'ai juste besoin de savoir de quoi il s'agit.

EDIT: Exemple

ObjectThatNeedsProcessing obj; 
WizardDialog dialog = new WizardDialog; 
dialog.addObjectToBeProcessed(obj); 
dialog.show(); 

//When the dialog is finished obj would be changed. 

Meilleures salutations

+0

alors quelle est votre question? –

+0

Quel est le modèle de la communication inter-objets? – Gerstmann

+2

Un exemple spécifique de ce que vous essayez d'obtenir (de préférence avec une section de code courte mais complète) serait utile. –

Répondre

1

Lorsque vous passez un objet à une méthode en Java, une autre est fait référence à l'objet existant. Vous avez donc 2 références au même objet.

enter image description here

0

Je ne suis pas programmeur C++ mais en C vous passez tout en valeur (même pointeurs sont passés par valeur, ils font juste quelque chose) - et il est le même en Java.

Et pour la prochaine personne qui le signale comme négatif - expliquez pourquoi pourquoi tout le monde le comprend.

+0

(j'ai voté) oui C passe tout en valeur, mais vous avez la possibilité supplémentaire de prendre l'adresse des variables, ce que vous ne pouvez pas faire en Java. Par exemple, si vous voulez laisser une fonction modifier un pointeur que vous avez dans votre portée, vous pouvez prendre son adresse (pour obtenir un pointeur sur un pointeur), la passer à la fonction et modifier le pointeur d'origine à travers ce pointeur , que vous ne pouvez pas faire en Java. En outre, vous pouvez prendre l'adresse des primitives (par exemple obtenir un pointeur int) et la passer à une fonction pour la modifier, ce que vous ne pouvez pas faire en Java sans utiliser un tableau ou une classe de conteneur mutable. – newacct

+0

Merci pour l'upvote :) Je suppose que vous pourriez faire valoir que les pointeurs vers des pointeurs sont une caractéristique de C/C++ pour laquelle il n'y a pas d'équivalent Java direct. Cela dit, je n'ai pas eu besoin d'une telle fonctionnalité avec Java - il est plus propre à écrire du code avec des interfaces simples. – DaveRlz

Questions connexes