gente…eu tava dando uma pesquisada no forum e vi essa sintaxe ae…
[code]
Comparator<SuaClasse> comp = new Comparator<SuaClasse>() {
public int compare(SuaClasse o1, SuaClasse o2) {
Date d1 = o1.getData();
Date d2 = o2.getData();
return d1.compareTo(d2);
}
public boolean equals(Object o) {
return super.equals(o);
}
};[/code]
bom, nõa faço nem ideia pra q serve, mas fiquei com duvidas nessa sintaxe…
Comparator<SuaClasse> comp = new Comparator<SuaClasse>() {
…
}
se possivel…alguem manja me explica isso … vlw pessoal abraços
Esses <> fazem parte da sintaxe nova de Generics, um recurso disponível a partir do J2SE 5. Nesse exemplo, o código deixa explícito que o Comparator que está sendo criado é um comparador de objetos da classe SuaClasse (até a versão 1.4.2, isso não era possível, não tinha como saber que classe um Comparator comparava).
Um exemplo mais fácil de entender é com coleções: se eu tenho uma List, eu posso armazenar qualquer objeto, certo? Mesmo que na minha aplicação, eu só coloque objetos da classe Cliente, a List cabe qualquer coisa. O problema disso é que o compilador deixa você adicionar qualquer tipo de objeto na lista, é a MINHA aplicação que só guarda objetos Cliente. Conseqüentemente, quando eu faço:
Cliente c = (Cliente) lista.get(0);
a conversão é obrigatória, porque a lista retorna uma referência a Object, já que ela serve pra qualquer tipo de objeto.
Se você precisa de uma List que só guarde um tipo de objeto, você pode usar Generics pra isso. Criando uma List<Cliente> o compilador só permite inserir objetos do tipo Cliente na lista. Qualquer outra tentativa o próprio compilador já detecta o erro. Com isso, você não precisa mais fazer conversões:
Cliente c = lista.get(0);
porque o compilador já sabe que a lista só tem objetos Cliente. Isso simplifica algumas coisas do código, como essa aí em cima, como também garante que seu código esteja type safe, pois as operações de inserção na lista que sejam ileguais são barradas na compilação.
Claro que você não pode sair usando a sintaxe <Classe> em qualquer classe que você quiser (tipo String<Cliente>), só pode usar isso em classes que forem declaradas esperando o uso de Generics. Dê uma olhada no tutorial da Sun sobre Generics e veja mais bem explicado o que é isso.
Sim, isso só funciona do Java 5 em diante. Se for applet, o cara tem que ter o Java atualizado mesmo. E eu num sei que versão a maioria dos usuários têm no computador não… :roll: Eu só sei que eu já tenho o JSE 6