[RESOLVIDO]Erro ao adicionar elemento em um objeto List

3 respostas
fabiocsilva

Olhem o seguinte trecho de código:

AdminSecaoForm form = new AdminSecaoForm();
			SecaoDAO dao = new SecaoDAO();
			List<Secao> listaDeSecoes = dao.findAll(Order.asc("nome"));

			/**
			 * A principio o primeiro item da listagem eh um elemento em branco
			 */
			if (listaDeSecoes.isEmpty()) {
				listaDeSecoes.add(new Secao());
			}

Pois é, esse código está disparando a exceção:

java.lang.UnsupportedOperationException

at java.util.AbstractList.add(AbstractList.java:151)

at java.util.AbstractList.add(AbstractList.java:89)

at PACOTE.execute(CLASSE.java:39)

Como isso tá dando erro ???

3 Respostas

thiago.correa

o método ‘dao.findAll’ retorna uma classe filha (que implementa java.util.List) que possui esse método add!!!

ItaloE

Tenta trocar essa “List<Secao” por uma “ArrayList” ou “LinkedList” … você não pode ter uma lista do tipo List, pois ela é uma interface…por iso a exceção.

Alguém me corrija se eu estiver errado :slight_smile:

fabiocsilva

3 anos depois vai a explicação:


Class AbstractList

To implement a modifiable list, the programmer must additionally override the set(int index, Object element) method (which otherwise throws an UnsupportedOperationException. If the list is variable-size the programmer must additionally override the add(int index, Object element) and remove(int index) methods.

Ou seja, a lista retornada pelo Hibernate é(ou era na época) imutável.

Criado 26 de setembro de 2006
Ultima resposta 2 de mar. de 2010
Respostas 3
Participantes 3