[Java] Rendre les variables de l'instruction for étendue et de chaque instruction immuables

Lorsqu'il est déclaré normalement

Si vous déclarez normalement l'instruction pour étendue et pour chaque instruction, ce sera comme suit. Puisqu'il n'est pas déclaré "final", il peut être réaffecté (les instructions normales "for" sont ignorées car la réaffectation est en principe essentielle).

List<Integer> intList = Arrays.asList(1, 2, 3, 4);

for(int i : intList) {
    i = 0; //Peut être réécrit
}

intList.forEach(it -> {
    it = 0; //Peut être réécrit
});

Dans cet article, nous réécrirons ces contenus sous une forme non réattribuable.

Rendre la variable immuable

Pour prolongé pour déclaration

Vous pouvez le rendre "immuable" en le déclarant avec "final".

for(final int i : intList) {
    i = 0; //Puisqu'il est déclaré définitif, il ne peut pas être réaffecté et une erreur de compilation se produit.
}

Pour chaque déclaration

Vous pouvez rendre l'argument final en spécifiant le type entre parenthèses comme indiqué ci-dessous.

intList.forEach((final int it) ->
    it = 0; //Puisqu'il est déclaré définitif, il ne peut pas être réaffecté et une erreur de compilation se produit.
);

Une autre solution

Pour le moment, l'argument peut être «final» même lors de son implémentation en tant que classe anonyme.

Consumer<Integer> finalConsumer = new Consumer<Integer>() {
    @Override
    public void accept(final Integer it) {
        it = 0; //Puisqu'il est déclaré définitif, il ne peut pas être réaffecté et une erreur de compilation se produit.
    }
};

excuses

Lors de la première publication de cet article, le titre et le contenu étaient "** Les index ne peuvent être rendus immuables que pour les instructions étendues dans les instructions for, étendues pour les instructions et forEach **", mais @ saka1029 l'a souligné. Comme vous pouvez le voir, c'était une erreur, j'ai donc complètement réécrit le titre et le contenu.

Merci d'avoir signalé @ saka1029.

Recommended Posts

[Java] Rendre les variables de l'instruction for étendue et de chaque instruction immuables
[Java] pour instruction / étendu pour instruction
J'ai essayé d'utiliser l'instruction Extended for en Java
Comment faire une boucle Java Map (for Each / extended for statement)
Différence entre final et immuable en Java
Java pour instruction
Comparez la vitesse de l'instruction for et de l'instruction for étendue.
Activer / désactiver SNI en Java pour chaque communication
Faites un blackjack avec Java
(Mémo) Java pour instruction
hash et chaque instruction
[Java] Types de variables et types
[Bases de Java] Créons un triangle avec une instruction for
[Java] Différence entre statique final et final dans les variables membres
Utiliser des variables pour les noms de classe et les noms d'identifiant dans haml
Ceci et cela pour éditer ini en Java. : inieditor-java
[Débutant] Variable Java / opérateur logique / étendu pour l'instruction [Note 22]
[Pour les débutants] Explication des classes, des instances et des statiques en Java
À propos de l'instruction et de l'instruction if
[Java] Instruction de base pour les débutants
Programmation Java (variables et données)
Refactoring: faire du Blackjack en Java
☾ Instruction Java / Repeat et instruction de contrôle de répétition
Créez votre propre serveur simple avec Java et comprenez HTTP
StringUtils.isNotBlank est pratique pour un jugement vide et un jugement nul en java
Définir des méthodes abstraites dans l'énumération Java et écrire leur comportement
Conseils d'utilisation de Salesforce SOAP et de l'API Bulk en Java
Instructions Java while et for
BCrypt + Mesure du temps de traitement pour chaque nombre d'étirements en Java
Différences de comportement par défaut de la mémoire et de la reconnaissance du processeur sur kubernetes (GKE) pour chaque version de Java
Utilisation des éléments de tableau Java, for, length, value et extended for statements
Comment faire un diamant révolutionnaire en utilisant Java pour déclaration wwww
SDK AWS pour Java 1.11.x et 2.x
Les débutants jouent à des jeux Janken en Java
Java pour les débutants, les expressions et les opérateurs 1
Série Java Primer (variations et types)
Exemple d'encodage et de décodage en Java
[Pour les débutants] Exécutez Selenium sur Java
Java pour les débutants, les expressions et les opérateurs 2
Classe StringBuffer et StringBuilder en Java
Comprendre equals et hashCode en Java
Comment nommer des variables en Java
Paramètres de débogage SSL dans Java
Classes et instances Java pour les débutants
Bonjour tout le monde en Java et Gradle
[JDBC] J'ai essayé de faire de l'accès à la base de données SQLite3 depuis Java une méthode pour chaque instruction SQL.
Comparaison de la vitesse de traitement entre Stream incluant le cast et Extended for Statement
[Java] Comment transformer un tableau à deux dimensions avec une instruction for étendue
Transférez automatiquement les animations pour chaque titre et stockez-les dans un dossier
[Java] De nos jours, l'instruction for étendue n'est pas exclusivement pour List, n'est-ce pas?
[Java] Les variables déclarées à l'intérieur de l'instruction `for` ne peuvent pas être utilisées en dehors du bloc` instruction for`
Java pour les débutants, les variables et les types
Facile à créer Slack Bot avec Java
Faire un tri à bulles et sélectionner le tri avec Ruby
Premiers pas pour l'apprentissage profond en Java
Points clés pour l'introduction de gRPC en Java
[Pour les débutants] Différence entre Java et Kotlin
[Java] Différences entre les variables d'instance et les variables de classe
ne doit pas retourner dans l'instruction for