Modifier la valeur finale de la variable de type Entier
Un final
objet ne peut pas être changé, mais nous pouvons définir ses attributs:
final MyClass object = new MyClass();
object.setAttr("something"); //<-- OK
object = someOtherObject; //<-- NOT OK
Est-il possible de faire la même chose avec un final Integer
et de modifier son int
valeur?
Je demande parce que j'appelle un travailleur:
public SomeClass myFunction(final String val1, final Integer myInt) {
session.doWork(new Work() {
@Override
public void execute(...) {
//Use and change value of myInt here
//Using it requires it to be declared final (same reference)
}
}
Et j'ai besoin de définir la valeur de myInt
à l'intérieur d'elle.
Je peux déclarer mes int
l'intérieur d'une autre classe, et qui serait à l'œuvre. Mais je me demande si c'est nécessaire.
OriginalL'auteur Majid Laissi | 2012-10-05
Vous devez vous connecter pour publier un commentaire.
Pas : un
Integer
est immuable, comme par exempleString
.Mais vous pouvez concevoir votre propre classe pour intégrer un entier et l'utiliser au lieu d'un Entier :
AtomicInteger est un Nombre.
qu'est ce que je pensais.. merci 🙂
Vous pouvez vous simplifier la tâche en faisant
value
public. C'est merdique, mais efficace. Ensuite, vous aurez accèsmyMutableIntegerObj.value
(par exemple à partir de l'intérieur de la classe). +1 pour @dystroyOriginalL'auteur Denys Séguret
Vous ne pouvez pas car il immuable par la conception.
Vous pouvez définir la valeur d'une
int[]
ouInteger[]
ouAtomicInteger
OriginalL'auteur Peter Lawrey
Vous ne pouvez pas modifier la valeur de
final
entier une fois attribué.. Cependant, vous pouvez retarder la cession., c'est à dire : - Vous ne pouvez attribuer unfinal
entier une fois.. Vous pouvez le faire soit au moment de la déclaration, ou dans d'initialiseur de bloc, ou dans un constructeur..OriginalL'auteur Rohit Jain
Vous pourriez emballer votre Entier dans un autre objet, qui est définitive et puis "remplacer" l'Entier à l'intérieur de cet objet wrapper par un autre.
OriginalL'auteur Stijn Geukens