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
-~----------~----~----~----~------~----~------~--~---

Responder a