Professor, Falha minha! Quando conheci o Java a linguagem já se encontrava na versão 1.5 e acabei tendo muito pouco contato com "a falta de autoboxing" e "a falta de generics", apenas mexendo em código legado de um software Opensource do qual eu faço parte da equipe de desenvolvedores, grande parte dessas "mexidas" era justamente para portar o código para as facilidades introduizadas pela versão 1.5.
Obrigado por me corrigir =) 2008/9/22 Miguel Jonathan <[EMAIL PROTECTED]> > 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 >> >> >> > > > > -- 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 -~----------~----~----~----~------~----~------~--~---
