Open bartomsilva opened 10 months ago
Oi, @bartomsilva. Tudo bem? Parabéns pelos estudos! Muito pertinente sua dúvida.
Vamos lá:
String
, e é por isso que nós estamos fazendo o casting para String durante a iteração.
// Iterando sobre a lista sem Generics (necessário fazer cast)
for (Object elemento : listaSemGenerics) {
String str = (String) elemento;
System.out.println(str);
}
Integer
, como no nosso exemplo. String
, e é por isso que o casting gera uma exceção ClassCastException
quando um elemento que não é uma String
é encontrado na lista.
// Exemplo sem Generics
List listaSemGenerics = new ArrayList();
listaSemGenerics.add("Elemento 1"); //Aqui está correto. Queremos uma List de String
listaSemGenerics.add(10); // Mas a List sem Generics permite adicionar qualquer tipo de objeto, que neste caso é um Integer.
for (Object elemento : listaSemGenerics) {
try {
String str = (String) elemento;
System.out.println(str);
} catch (ClassCastException e) {
System.out.println("Elemento não é uma String: " + elemento);
}
Generics
em Java permite que você defina o tipo de elementos que uma lista pode conter, aí sim, garantimos a segurança de tipo em tempo de compilação e eliminamos a necessidade de fazer casting manualmente durante a iteração. Deu para clarear o entendimento?
Muito obrigado teacher Cami
Olá teacher Cami, sou iniciante em Java e estou adorando suas aulas, mas tenho uma questão com relação a este ponto. // Iterando sobre a lista sem Generics (necessário fazer cast) for (Object elemento : listaSemGenerics) { String str = (String) elemento; System.out.println(str); } observei que não preciso de fato de um casting para poder imprimir os valores da lista, e que a forma de casting empregada gera uma Exception, buscando na documentação a forma de fazer o casting então ficaria assim. String str = elemento.toString(); mas gostaria saber sua explicação, se fiz algo de errado que tenha vindo a causar erro ao testar, e qual seria a melhor forma de se fazer esse casting.