Java List.add () UnsupportedOperationException

Intento agregar objetos a una instancia List pero arroja una excepción UnsupportedOperationException . ¿Alguien sabe por qué?

Mi código de Java:

 String[] membersArray = request.getParameterValues('members'); List membersList = Arrays.asList(membersArray); for (String member : membersList) { Person person = Dao.findByName(member); List seeAlso; seeAlso = person.getSeeAlso(); if (!seeAlso.contains(groupDn)){ seeAlso.add(groupDn); person.setSeeAlso(seeAlso); } } 

El mensaje de error:

 java.lang.UnsupportedOperationException
     java.util.AbstractList.add (Fuente desconocida)
     java.util.AbstractList.add (Fuente desconocida)
     javax.servlet.http.HttpServlet.service (HttpServlet.java:641)
     javax.servlet.http.HttpServlet.service (HttpServlet.java:722)

No todas las implementaciones de List admiten el método add() .

Un ejemplo común es la List devuelta por Arrays.asList() : está documentado que no admite ninguna modificación estructural (es decir, eliminar o agregar elementos) (énfasis mío):

Devuelve una lista de tamaño fijo respaldada por la matriz especificada.

Incluso si esa no es la List específica que está tratando de modificar, la respuesta aún se aplica a otras implementaciones de la List que son inmutables o solo permiten algunos cambios seleccionados.

Puede obtener más información leyendo la documentación de UnsupportedOperationException y List.add() , que documenta que se trata de una “(operación opcional)”. El significado preciso de esta frase se explica en la parte superior de la documentación de la List .

Como solución, puede crear una copia de la lista para una implementación modificable conocida como ArrayList :

 seeAlso = new ArrayList<>(seeAlso); 

Debe inicializar su Lista, vea también:

 List seeAlso = new Vector(); 

o

 List seeAlso = new ArrayList(); 

No puede modificar un resultado de una consulta LDAP. Tu problema está en esta línea:

 seeAlso.add(groupDn); 

La lista seeAlso no se puede modificar.

Intereting Posts