No método abaixo, estou usando instanceof, mas não funciona.
Alguém sabe me dizer como verificar se um objeto implementa determinada interface??
private static void fazerAnimalBrincar(List lista) {
Iterator it=lista.iterator();
while(it.hasNext()){
if(it.next() instanceof Estimacao) {
Estimacao e=(Estimacao) it.next();
e.brincar();
}
}
}
Provável que você esteja errando em algo.
Como só temos o método, não podemos dizer nada.
Mas, veja aqui uma leve explicação.
[quote=drsmachado]Provável que você esteja errando em algo.
Como só temos o método, não podemos dizer nada.
Mas, veja aqui uma leve explicação.[/quote]
O código que eu postei compila, mas não funciona…
Não funciona é uma expressão extremamente abrangente.
O operador instanceof está habilitado a retornar uma verificação como true (verdadeiro) se:
a instanceof A:
- O operando a é um objeto da classe A;
- O operando a é um objeto de uma subclasse de A;
- O operando a é um objeto de uma classe que implementa A;
O problema é este trecho:
if(it.next() instanceof Estimacao) {
Estimacao e=(Estimacao) it.next();
//...
}
Você chama it.next() 2 vezes seguidas. Quando você invoca next() o iterador avança para o próximo elemento. Sendo assim, o objeto que você tenta converter para Estimacao não é o mesmo objeto sobre o qual você aplicou o teste.
Na mosca rmendes08!!! Muito obrigado!