Flavio, Nenhuma classe de coleção aceita valores simples, portanto o seu exemplo: list.add(10); não poderia funcionar.
Coleções armazenam apenas referências para objetos. Para isso foram criadas as classes "wrappers", como Integer, Double, etc Para criar uma lista de inteiros, você precisa fazer: list.add(new Integer(10)); Mas aí tem que ter o trabalho chato de empacotar o int em um Integer e depois desempacotar o int com: int x = list.get(0).intValue(); Recentemente, a partir da versão 5.0, foi criado o mecanismo de "autoboxing", que permite empacotar e desempacotar automaticamente esses valores simples quando queremos usá-los em coleções. Nesse caso, agora podemos fazer (antes nao): ArrayList<Integer> list = new ArrayList<Integer>(); list.add(10); // o autoboxing cria automaticamente um Integer com o 10 e coloca na lista. int x = list.get(0); // o autoboxing obtem automaticamente o int dentro do Integer. Mais detalhes sobre autoboxing em http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html (Mas eu não cheguei a dar isso em sala) Jonathan 2008/9/22 Flavio Costa <[EMAIL PROTECTED]> > Antes da existência desta ferramenta era possível fazer o seguinte: > > ArrayList list = new ArrayList(); >> list.add(10); >> list.add("teste"); >> list.add(new Object()); > > String s = (String) list.get(1); *// precisei fazer um cast e ainda corro >> risco de indice 1 não conter realmente uma String* >> > > Para acessar os elementos desta lista, ou você tinha *disciplina* e só > usava a lista para guardar um tipo de dados e ainda sim usar toneladas de > *casts* ou você usava o operador *instanceof* para *tentar* adivinhar qual > tipo você está manipulando. Vale frizar que isto só dará *erro em tempo de > execução* (ClassCastExceptions) caso você faça casts incorretos pois o > compilador não pode eliminar tais tipo de erro pois não pode prever o que > será adicionado e qual será o tipo do que está sendo adicionado > > Com generics você *"avisa"* para o compilador que tipos de dados esperar, > com isso podemos verificar os parâmetros passados para os método. Meio > dificil de explicar com palavras, vamos tentar com um exemplo. > > ArrayList<String> list = new ArrayList<String>(); *// a partir deste >> momento o compilador sabe que esta lista só possuirá strings* >> list.add("teste") *// sem problemas, pois o parâmetro é realmente uma >> string.* >> list.add(10) *// erro em tempo de compilação, pois o parâmtro não é uma >> string* > > > > Sobre esta dúvida: "Uso correto de variáveis do tipo de uma interface ou > do tipo de uma classe abst" > Explique melhor pois não consegui entender qual realmente é a sua > dificuldade. > > []'s > > > 2008/9/22 Gustavo Cury <[EMAIL PROTECTED]> > >> Bem, estou com um pouco de dúvida nos seguintes assuntos sobre o teste, >> teria como vocês darem uma esclarecida em: >> >> - Uso de Generics com ArrayList >> >> - Uso correto de variáveis do tipo de uma interface ou do tipo de uma >> classe abstrata >> >> Obrigado desde já. >> Gustavo Cury >> >> ------------------------------ >> Receba GRÁTIS as mensagens do Messenger no seu celular quando você estiver >> offline. Conheça o MSN Mobile! Crie já o >> seu!<http://mobile.live.com/signup/signup2.aspx?lc=pt-br> >> >> > > > -- > Flávio Coutinho da Costa > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Comp 2 - Geral" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/comp2-geral?hl=en -~----------~----~----~----~------~----~------~--~---
