93 votes

Est-ce que Java a des types mutables pour Entier, Flottant, Double, Long ?

Je suis dans une situation où je veux utiliser des versions mutables de choses comme Entier. Dois-je utiliser ces classes (ci-dessous) ou Java a-t-il quelque chose de intégré ?

http://www.java2s.com/Code/Java/Data-Type/Amutableintwrapper.htm

101voto

Alexandre Jasmin Points 18067

Vous pouvez toujours envelopper la valeur dans un tableau comme int[] mutable = {1}; si l'inclusion du code pour une classe d'enveloppement mutable est trop lourde.

61voto

Clive Points 149

Depuis JDK 1.5 Java a maintenant java.util.concurrent.atomic.AtomicInteger

Il s'agit d'un entier mutable sans fil, exemple d'utilisation :

final AtomicInteger value = new AtomicInteger(0);

puis plus tard :

value.incrementAndGet();

57voto

Bozho Points 273663

Non, Java ne les a pas intégrés. Et c'est pour une raison. L'utilisation de types mutables est dangereuse, car ils peuvent facilement être utilisés à mauvais escient. En outre, il est vraiment facile à mettre en œuvre. Par exemple, commons-lang a un MutableInt.

13voto

VinceFior Points 295

Voici une petite classe que j'ai faite pour un entier mutable :

public class MutableInteger {
    private int value;
    public MutableInteger(int value) {
        this.value = value;
    }
    public void set(int value) {
        this.value = value;
    }
    public int intValue() {
        return value;
    }
}

Vous pourriez facilement étendre cela à n'importe quelle autre primitive. Bien sûr, comme tout le monde le dit, vous devriez l'utiliser avec précaution.

7voto

Peter Lawrey Points 229686

Vous pouvez utiliser un nnnn[] comme objet mutable pour n'importe quel type primitif comme le suggère @Alexandre, java a aussi AtomicInteger et AtomicLong.

IMHO int est généralement un meilleur choix que Integer et c'est mutable.

Pouvez-vous plus de détails sur pourquoi vous avez besoin d'un objet multiple, peut-être qu'il y a une autre façon de réaliser la même chose.

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