o erro abaixo:Unresolvedcompilation problem: Typemismatch: cannot convert from Object to String Issomesmo, como nao definimos que tipo de elemento nossa lista possui, ocompilador espera um tipo Object logo poderiamos consertar este problema de 2 maneiras:Defnindo a lista como String por meio dos genericosRealizarmos a atribuicao a uma variavel ObjectObject teste3 = lista.get(0); Omesmo ocorreria se defniirmos uma lista generica com valores de umtipo de objeto como Surfista por exemplo:publicstaticvoidmain(Stringargs[]) {List<Surfista>toReturnt=newArrayList<Surfista>(); t.addAll(listaDeSurfistas());//ou t.add(Surfista.listaDeSurfistas().get(0));//apenasum elemento//ou Surfistas = Surfista.listaDeSurfistas().get(0);//apenasum elemento}publicstaticList<Surfista> listaDeSurfistas() { List<Surfista>toReturn= newArrayList<Surfista>(); toReturn.add(newSurfista("GabrielMedina","Medina",19, 1)); toReturn.add(newSurfista("MiguelPupo","Dropador",21, 2)); toReturn.add(newSurfista("AdrianoSouza","Rasgador",26, 3)); toReturn.add(newSurfista("RaoneMonteiro","Monteiro",30, 4)); toReturn.add(newSurfista("AlejoMuniz","novato",23, 5)); toReturn.add(newSurfista("FelipeToledo","cacula",18, 6)); returntoReturn;} Parafinalizar esta nossa introducao a genericos falaremos sobre ocodigo acima, onde poderemos definir o tipo de retorno com uma listacom genericos. Este metodo devera por sua sempre retornar umalista deste tipo ou ira ocorrer erro de compilacao assim comoocorre nos outros casos ja descritos.Trabalhandocom codigos genericos e nao genericos Comoja comecei dizendo na introducao, a utilizacao de genericos eopcional apesar de recomendada. Foi e ainda e tratada como opcionalpor motivos obvios, caso o desenvolvedor tivesse muito codigo dasua aplicacao na versao anterior a 5, a refatoracao de toda suaaplicacao iria ser algo muito custoso e a empresa da epoca Sunlevou isso em consuderacao para implementar algo que nao fosseacarretar problemas entre versoes. Issofaz com que em alguns momentos nos precisemos dispor de conhecimentopara trabalhar com as duas versoes ao mesmo tempo pois diferente doque mostramos ate agora, onde os erro acorreram durante acompilacao, muitos erros relacionados a genericos acontecem emtempo de execucao conforme mostramos abaixo:.publicclassTestandoGenericos { publicstaticvoidmain(String... args){ 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(new Surfista());//errodecompilacao lista.add(newSurfista());//ok List<Integer>nums= newArrayList<Integer>(); //versao5 nums.add(5);//versao5 ListnumsV4= newArrayList();//versao4 numsV4.add(newInteger(5));//versao4 System.out.println("comecandoclasse testando array"); System.out.println(nums);//OK System.out.println(numsV4);//ok Adicionaad= newAdiciona(); ad.somaItemInt(nums,"generica "); ad.somaItemInt(numsV4,"nao generica "); System.out.println(nums);//OK System.out.println(numsV4);//ok System.out.println("ATEAQUI TUDO BEM!!"); System.out.println("EAQUI?"); ad.somaItemString(nums,"generica "); ad.somaItemString(numsV4,"nao generica "); System.out.println(nums);//OK System.out.println(numsV4);//ok System.out.println("Total?"); System.out.println(ad.calculaItem(nums,"generica"));//OK System.out.println(ad.calculaItem(numsV4,"naogenerica"));//ok System.out.println(nums);//OK System.out.println(numsV4);//ok }}classAdiciona { voidsomaItemInt(Listlista,String tentativa){ try{ lista.add(2);//versao5 lista.add(3);//versao5 lista.add(7);//versao5 }catch(Exceptione){System.out.println("somaItemInt:tentativa - "+ tentativa);} } voidsomaItemString(Listlista,String tentativa){ try{ lista.add("texto");//versao4 }catch(Exceptione){System.out.println("somaItemString:tentativa -"+ tentativa);} } intcalculaItem(Listlista,String tentativa){ inttotal= 0; Iteratorit= lista.iterator(); try{ while(it.hasNext()){ total+= ((Integer) it.next()).intValue(); } }catch(Exception e){ System.out.println("calculaItem:tentativa -"+ tentativa); } returntotal; } }Saida:comecandoclasse testando array[5][5][5,2, 3, 7][5,2, 3, 7]ATEAQUI TUDO BEM!!EAQUI?[5,2, 3, 7, texto][5,2, 3, 7, texto]Total?calculaItem:tentativa -generica17calculaItem:tentativa -nao generica17[5,2, 3, 7, texto][5,2, 3, 7, texto] Podemosconcluirdeacordo com o codigoacima queaslistas que sao declardas com genericos, nao aceitam outro tipo deelemento que nao seja o definido na declaracao, caso contrario,qualquer elemento e inserido na lista acusando warningdecompilacao. Estas mensgens de atencao feitas pelo compiladorpodem inclusive serem ocultadas caso compile sua class utilizando aflag -Xlint:unchecked. Maisadiante vemos ummetodoque possui dois paramentro, ondeoprimeiro e uma lista naogenerica eo segundoumavariavel detextoque estaapenas servindo paraidentificarmos em que momento ometodoserachamado.Vemosque mesmotendo definido umalista com genericos, definindo com elementos inteiros, a partir domomento emqueaexecucaoentra nometodo comlista nao generica,qualquerelementoeadicionadoa listamesmoa lista tendo sua definicao generica for a do metodo.O metodosomaItemStringignora e adicionaum elemento texto em uma quedeveria conter apenas inteiros,ocasionando erro no proximo metodo calculaItemquetenta somar os valores de todos os elementos da lista passadacomo paramentro, deparandocom um elemento texto egerandoerro de execucao conforme alertado anteriomente pelocompilador. Poderiamosnos precaver desteerrodefinindo o metodo da seguinte forma::voidsomaItemString(List<Integer>lista,String tentativa)https://github.com/gmachado1/blog/tree/branche1/GenericosEConjuntos