Considere o seguinte código Java:
import java.util.ArrayList;
import java.util.List;
class Animal {
void emitirSom() {
System.out.println("Som genérico");
}
}
class Gato extends Animal {
@Override
void emitirSom() {
System.out.println("Miau");
}
}
public class Main {
public static void main(String[] args) {
List<Object> caixa = new ArrayList<>
caixa.add(new Gato());
caixa.add(new Gato());
// A
((Gato) caixa.get(0)).emitirSom();
// B
((Animal) caixa.get(1)).emitirSom();
}
}
Analise as afirmações a seguir:
I. A linha A imprime Miau.
II. A linha B também imprime Miau, mesmo sem converter para Gato.
III. Se a lista fosse List<Animal>, daria para remover os casts e ainda adicionar Gato normalmente.
IV. Em List,<Object> get(...) retorna o tipo concreto do elemento, permitindo chamar emitirSom() sem cast.
V. List <Object> é mais segura que List <Animal> para evitar ClassCastException ao recuperar elementos.
Estão corretas apenas as afirmações:
Provas
Questão presente nas seguintes provas