138 votes

Comment utiliser les pointeurs en Java ?

Je sais que Java n'a pas de pointeurs, mais j'ai entendu dire que les programmes Java peuvent être créés avec des pointeurs et que cela peut être fait par les quelques experts en Java. Est-ce vrai ?

9voto

Peter Lawrey Points 229686

Vous pouvez utiliser des adresses et des pointeurs à l'aide de la classe Unsafe. Cependant, comme son nom l'indique, ces méthodes ne sont pas sûres et sont généralement une mauvaise idée. Une utilisation incorrecte peut entraîner la mort de votre JVM de manière aléatoire (en fait, le même problème se pose en cas d'utilisation incorrecte de pointeurs en C/C++).

Bien que vous soyez habitué aux pointeurs et que vous pensiez en avoir besoin (parce que vous ne savez pas coder autrement), vous vous rendrez compte que ce n'est pas le cas et que vous vous en porterez mieux.

5voto

Poindexter Points 1784

Techniquement, tous les objets Java sont des pointeurs. Par contre, tous les types primitifs sont des valeurs. Il n'y a aucun moyen de prendre le contrôle manuel de ces pointeurs. Java utilise simplement en interne le passage par référence.

2voto

Andrzej Doyle Points 52541

Pas vraiment, non.

Java n'a pas de pointeurs. Si vous vraiment vous pourriez essayer de les émuler en construisant autour de quelque chose comme la réflexion, mais cela aurait toutes les complexité de pointeurs sans aucun des avantages .

Java n'a pas de pointeurs parce qu'il n'en a pas besoin. Quel genre de réponses espériez-vous de cette question, c'est-à-dire, au fond de vous, espériez-vous pouvoir les utiliser pour quelque chose ou était-ce de la simple curiosité ?

2voto

coolest_head Points 474

Tous les objets en java sont passés aux fonctions par copie de référence, sauf les primitives.

En fait, cela signifie que vous envoyez une copie du pointeur vers l'objet original plutôt qu'une copie de l'objet lui-même.

Veuillez laisser un commentaire si vous voulez un exemple pour comprendre cela.

2voto

zezba9000 Points 1276

Les types de référence Java ne sont pas les mêmes que les pointeurs C, car on ne peut pas avoir un pointeur sur un pointeur en Java.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X