Java List.add() UnsupportedOperationException
arraylist (3)
Intento agregar objetos a una instancia List<String>
pero arroja una excepción UnsupportedOperationException
. ¿Alguien sabe por qué?
Mi código de Java:
String[] membersArray = request.getParameterValues(''members'');
List<String> membersList = Arrays.asList(membersArray);
for (String member : membersList) {
Person person = Dao.findByName(member);
List<String> 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(Unknown Source) java.util.AbstractList.add(Unknown Source) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Debe inicializar su Lista, vea también:
List<String> seeAlso = new Vector<String>();
o
List<String> seeAlso = new ArrayList<String>();
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.
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);