Il existe des types immuables dans Java. Et si vous passez un objet immuable à une méthode, il ne sera pas changé après l'appel de cette méthode même si sa valeur a été modifiée dans cette méthode. Je sais que toutes les primitives sont immuables. Et String
est immuable aussi.
J'ai écrit un code simple pour vérifier cette fonctionnalité dans Java et il semble que les classes wrapper pour les primitives sont également immuables. Quelqu'un peut-il lister tous les types immuables dans Java?Tous les types immuables dans Java
Répondre
il ne sera pas modifié après avoir appelé cette méthode, même si sa valeur a été modifiée dans cette méthode
n'a rien à voir avec immuable.
void change(SomeType st) {
st.setValue(123);
}
va changer la réalité. Alors que
void change(SomeType st) {
st = new SomeType(123);
}
ne sera pas. La différence ici est de savoir si vous modifiez la référence ou si vous opérez sur l'objet référencé.
La chaîne et la classe wrapper sont appelées immuables car il n'y a absolument aucune fonction membre comme setValue
qui pourrait changer cet objet.
J'espère que vous comprenez cela. Vous pouvez commenter et demander librement si vous avez plus de doute.
J'ai compris, merci beaucoup. – shift66
Toute classe destinée à contenir une valeur primitive fournie dans jdk doit transmettre cette liste.
Exemple - Entier, Long, Double, Chaîne et ainsi de suite.
En Java, les types primitifs sont énumérables: byte, short, int, long, char, float, double, bool. Primitive et immuable sont deux choses totalement différentes. – Haozhun
@Gene, Vous avez mal compris la déclaration. Toute classe est une représentation de valeurs primitives ... J'espère que vous comprenez maintenant. –
Je n'ai toujours pas compris. Excusez-moi. Cependant, la downvote est verrouillée en raison de timeout et je ne peux pas le changer maintenant. Pardon. – Haozhun
Non, c'est impossible.
Tout le monde peut ajouter ses propres types immuables et je suis assez sûr que chaque version de java introduit quelques nouvelles
Oui, je sais, j'ai cherché dans google. Je veux connaître tous les types immuables connus. Par exemple Integer. Tout le monde peut utiliser ce type. Il semble que l'URI soit immuable aussi. Est-ce que c'est juste? – shift66
@Ademiban: Où cela se termine-t-il? Tout le monde peut aussi utiliser les communs Apache, est-ce que les immutables devraient aussi être listés?> – amit
javadoc a toutes ces informations. de l'URI javadoc: Les instances de cette classe sont immuables. donc oui URI est immuable – Peter
- 1. Id de types immuables
- 2. Python, types immuables
- 3. Hériter des types immuables
- 4. Types immuables Python dans les appels de fonction
- 5. Inconvénients de rendre les objets Java immuables
- 6. Les types anonymes sont immuables, structure ou objet complet?
- 7. Ai-je besoin de synchroniser l'accès aux types immuables dans Java?
- 8. Tous les objets sont-ils immuables à l'intérieur du tas?
- 9. Rechercher des types dans tous les assemblages
- 10. Filtrer tous les types d'espaces dans PHP
- 11. Étendre tous les types dans Swift?
- 12. Obtenir tous les types dérivés dans SchemaSet
- 13. Les classes de wrapper Java sont-elles vraiment immuables?
- 14. Java: méthode pseudo-setter pour les classes immuables
- 15. Est-ce que Java optimise les objets immuables?
- 16. Création d'objets immuables dans les pages JSP
- 17. putIfAbsent pour les cartes immuables?
- 18. Hiérarchie des types dans les annotations Java
- 19. assembly.GetTypes() ne retourne pas tous les types
- 20. Écouter tous les types d'événement d'un EventDispatcher
- 21. Liste tous les types sql de liquibase
- 22. Reconnaissance gestuelle ios pour tous les types
- 23. Obtenir tous les types dérivés d'un type
- 24. Appel d'une fonction tous les types d'utilisateur
- 25. Partage de NSStrings immuables
- 26. android.widget.LinearLayout tous les types possibles d'erreurs
- 27. Comment faire une boucle dans tous les messages, dans tous les types de messages personnalisés
- 28. DateTime.TryParse tous les types de dates possibles
- 29. Php télécharger tous les types de fichiers
- 30. Fonction qui accepte tous les types d'argument
Les primitives ne sont pas immuables. Le fait qu '«ils ne changent pas après les avoir transmis à une méthode» est parce qu'ils sont passés en valeur, non parce qu'ils sont immuables. – amit
Question similaire: http://stackoverflow.com/questions/5124012/examples-of-immutable-classes – Azodious
quelle serait la raison de connaître cette liste? – Dapeng