J'ai une fonction d'analyse syntaxique qui analyse une longueur encodée à partir d'un tampon d'octets, elle renvoie la longueur analysée sous la forme d'un entier et prend un index dans la mémoire tampon sous la forme d'un argument entier. Je veux que la fonction mette à jour l'index en fonction de son analyse, c'est-à-dire veuille transmettre cet index par référence. En C, je ne ferais que passer un int *
. Quel est le moyen le plus propre de le faire en Java? Je cherche actuellement à passer l'argument d'index. comme int[]
, mais c'est un peu moche.
Réponses
Trop de publicités?Vous ne pouvez pas transmettre d'arguments par référence en Java.
Ce que vous pouvez faire, c'est envelopper votre valeur entière dans un objet mutable. Utiliser Apache Commons ' MutableInt
est une bonne option. Une autre manière, un peu plus obscure, consiste à utiliser un int[]
comme vous l’avez suggéré. Je ne l'emploierais pas car il est difficile de comprendre pourquoi vous enroulez un int
dans un tableau à une seule cellule.
Notez que java.lang.Integer
est immuable.
Enveloppez le tampon d'octet et l'index dans un objet ByteBuffer . Un ByteBuffer encapsule le concept de tampon + position et vous permet de lire et d'écrire à partir de la position indexée, qu'il met à jour au fur et à mesure.