Duvida em compilacao

1 resposta
LPJava

pq o codigo abaixo compila e executa? ele deveria nao compilar?

import java.util.*;
class GenNoUs{
	public static void main(String [] ags){
		List a = new ArrayList<Integer>();
			a.add("Camilo");
		System.out.print(a.get(0));
	}
}

especifiquei o tipo do meu conjunto e adicionei uma String e ele compilou normal nao entendi. A kathy fala tb que se eu adicionar algo que nao seja do tipo do conjunto e nao usar ele roda normal mais se usar ele nao compila… isso me confundiu um pouco ta na pag 331(port).

quem puder dar esse help :smiley:

1 Resposta

nbluis

Claro …
Seu objeto List aceita qualquer tipo de Objeto, errado seria se fosse o contrário.

Explico.
Se vc tivesse o seguinte trecho de código

import java.util.*;
 class GenNoUs{
 	public static void main(String [] ags){
 		List a = new ArrayList<Integer>();
 		a = new ArrayList<String>();
 		a.add("Camilo");
 		System.out.print(a.get(0));
 	}
 }

Sua List não está declarada aceitando apenas uma Collection e sim uma Collection, que é o que fica por regra em tempo de compilação, mas certamente terá erros de execução.

Para resolver, basta declarar sua List como aceitando valores Integer assim.

import java.util.*;
 class GenNoUs{
 	public static void main(String [] ags){
 		List<Integer> a = new ArrayList<Integer>();
 		a.add("Camilo");
 		System.out.print(a.get(0));
 	}
 }

Assim terá um erro de compilação.

Se tiver dificuldades avise.

Até mais.

Criado 17 de fevereiro de 2007
Ultima resposta 17 de fev. de 2007
Respostas 1
Participantes 2