Looking for java Answers? Try Ask4KnowledgeBase
Looking for java Keywords? Try Ask4Keywords

Java Language Collection non modifiable


Exemple

Parfois, il n’est pas une bonne pratique d’exposer une collection interne car cela peut conduire à une vulnérabilité de code malveillant en raison de sa caractéristique mutable. Afin de fournir des collections "en lecture seule", java fournit ses versions non modifiables.

Une collection non modifiable est souvent une copie d'une collection modifiable qui garantit que la collection elle-même ne peut pas être modifiée. Les tentatives de modification entraîneront une exception UnsupportedOperationException.

Il est important de noter que les objets présents dans la collection peuvent toujours être modifiés.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class MyPojoClass {
    private List<Integer> intList = new ArrayList<>();

    public void addValueToIntList(Integer value){
        intList.add(value);
    }
    
    public List<Integer> getIntList() {
        return Collections.unmodifiableList(intList);
    }
}

La tentative suivante de modifier une collection non modifiable lancera une exception:

import java.util.List;

public class App {

    public static void main(String[] args) {
        MyPojoClass pojo = new MyPojoClass();
        pojo.addValueToIntList(42);
        
        List<Integer> list = pojo.getIntList();
        list.add(69);
    }
}

sortie:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055)
    at App.main(App.java:12)