Genericos Nestapostagem e na proxima, falarei sobre genericos. Muito utilizada em ,conjuntos,fazendo com que o programador defina ja de inicio qual tipo deelemento sera armazenado na sua lista. Os genericos sao faceis deserem utilizados, basta colocar um sinal de menor que < o elemento e depois o sinal de maior que > . Antesde java 5 onde foi iniciado a parte de genericos as declaracoes de uma lista eram da seguinte forma: ArrayListlista= newArrayList(); Aonos depararmos com este tipo de lista, nao temos como saber que tipode elementos sao armazenados (String, Integers, Log, Object...) Masagora seus problemas acabaram, ao se deparar com uma lista a partirno java 5 possivelmente tera o seu codigo a seguinte sintase.ArrayList<String>lista= newArrayList<String>(); Adeclaralcao de genericos em uma lista e totalmente facultativo.Nao acontecera nenhum erro com a falta desta declaracao, contudovoce tera que aturar os warnings de compilacao que ocorrerao ao compilar suaaplicacao. Sem contar quevoce tera mais preocupacoes em seus codigos pois, pela naode definicao deque tipoa lista ira armazenar, elapodera aceitar tudo o que quiserem colocar.Porexemplo: ArrayList<String>listaGen= newArrayList<String>(); ArrayListlista= newArrayList(); listaGen.add("teste1");//ok lista.add("teste1");//ok listaGen.add(2);//errodecompilacao lista.add(2);//ok listaGen.add(newSurfista());//errodecompilacao lista.add(newSurfista());//ok Podemosver que a lista que nao possui a definicao de genericos <String>listaGen fornecendo uma seguranca muito maior a partir domomento que tentamos colocar um inteiro ou uma instancia de Surfistaem sua lista mas o compilador impede que isso ocorra acusando erro nacompilacao com a seguinte stackTrace.inthe type ArrayList<String> is not applicable for the arguments(int) Themethod add(String) in the type ArrayList<String> is notapplicable for the arguments (Surfista) Emquanto isso a outra lista criada sem a utilizacao de genericos,aceita qualquer tipo de elemento, uma vez que nao foi definido emnenhum momento qual tipo de elemento devera ser armazenado nestalista. Agrande vantagem da utilizacao de genericos e que tiramos aquelaresponsabilidade de nos termos que saber se o tipo do conjuntos quetemos esta adeguado ao tipo do elemento que desejamos adicionar alista. Colocamos toda esta responsabilidade para o compilador afinaluma vez que esta responsabilidade pode ser autimatizada, porque naoo fazer nao e mesmo? E exatamente isso que ocorre ao tentarmosadicionar na lista listaGen oitem de valor igual a 2. Uma vez que o compilador verifica que alista deveria apenas receber valores texto (string), o compiladoracusa erro de compilacao ao tentar adicionar qualquer outro tipo deelemento que nao seja texto e desta vez a classe nao compila emquanto o erro nao for corrigido. Masesta enganado se os beneficios acabam por ai. Damesma forma que existem beneficios para inserir elementos em umconjunto generico, o mesmo ocorre a partir do momento em quedesejamos obter um elemento da lista, Diferente das listasnao-genericas, uma lista generica nao percisa converter umelemento quando for atribui-lo a uma outra variavel na aplicacao. Continuandocom exemplos a partir dos ja demonstrados acima deste post: Stringteste1= listaGen.get(0);//ok teste1= lista.get(0);//errode compilacao Definimosuma variavel String e atribuimos a ela o valor do primeiro elementoda lista generica listaGenassim como ja era esperado, a atribuicao e feita normalmente sema necessidade de uma conversao. Isto porque o compilador ja sabeque a lista e composta de valores String, o que nao ocorre aotentarmos realizar o mesmo procedimento com a lista nao-genericaobtendo