Je viens d'une C++ fond et je suis actuellement en apprentissage de Java. Une question s'est posée lorsque j'ai essayé d'utiliser certains des bibliothèques tierces. Comment puis-je déterminer si l'appel à une méthode de prendre un objet de référence comme paramètre modifie l'objet? En C++ c'est clair grâce à l'utilisation du mot-clé const. Si la signature de la méthode est:
void foo(Boo& boo);
Je sais que l'objet référencé peut être modifié, alors que si la signature de la méthode est:
void foo(const Boo& boo);
Le compilateur garantit que l'objet référencé n'est pas modifié.
Je n'ai pas vu quelque chose d'analogue en Java, comme seule la référence elle-même peut être déclarée final, pas de l'objet référencé, et un dernier argument n'a pas beaucoup de sens, en premier lieu, puisqu'il est passé par valeur, de toute façon. Donc, quand je vois une méthode telle que:
void foo(Boo boo) {...}
Comment puis-je déterminer si l'objet référencé par boo est modifié à l'intérieur du corps de la fonction (peut-être à l'aide d'annotations)? Si il n'y a aucun moyen de savoir, est-il largement utilisé convention ou de certaines des meilleures pratiques pour éviter la confusion et d'erreurs?