Note: Arl.java uses unchecked or unsafe operations
Note: Recompile with -Xlint:unchecked for details.
a clas ta em anexo nao conseguir entender esse erro…
Note: Arl.java uses unchecked or unsafe operations
Note: Recompile with -Xlint:unchecked for details.
a clas ta em anexo nao conseguir entender esse erro…
Isso não é um erro… é só um Warning
List sList = Arrays.asList(sa);
sList.set(1,"lopes");
List<String> sList = Arrays.asList(sa);
Se dá porque você não esta usando uma List tipada… e usando o você afirma que sua List é de String, e por isso não toma mais nenhum warning… =]
:?
Cara, caso não tenha muita noção, estude a API Java Collections Framework (JCF); ela é de suma importância.
Entretanto, vou tentar explicar o que ocorreu.
Em versões anteriores do Java, a JCF era implementada com coleções que gerenciavam Objects somente.
Agora, na nova versão, com a implementação essencial dos Genéricos (importante estudar!), as classes foram remodeladas para suportar os genéricos.
Portanto, uma coleção agora deve, preferencialmente, explanar qual o tipo dos seus objetos, exemplo:
Stack< Integer > stack = new Stack< Integer >();
Isso define que a Stack armazenará só e somente só objetos Integer. Isso é muito bom pq torna “a coisa mais organizada”.
Quando tu tentas criar uma List (que é uma coleção) sem especificar um tipo, desta maneira:
List list = new List();
Tu estás criando uma lista chamada de “tipo bruto”, que é um modo especial mantido para promover a retrocompatibilidade das aplicações que usam coleções com versões antigas do Java.
Quando se está usando tipo bruto (como no seu caso), o Java usa implicitamente, na sua coleção (List) Object como o tipo de dados. Isso incorre no fato de que uma coleção (List) passa a poder armazenar Qualquer tipo de objeto (qualquer classe estende Object) e isso pode causar erros indesejáveis (como qualquer outro).
Cara, não sei se soube expressar-me bem, mas a questão é: procure estudar a “Java Collections Framework” e os “Genéricos”.
isso tudo aconteceu pq nao disse o tipo especifico de minha list?
List<String> lit = new ArraysList();
apenas por isso?
[quote=camilolopes]
apenas por isso?[/quote]
Yeahh…
afff vou ter um infarto por casua dessa certificacao… nunca estudei tanto na minha vida! se juntar os 4 semestre da faculdade nao chga nem aos pes!
Cara, acho que o código que você postou acima até compila, mas não sei quais as conseqüências da real execução.
De qualquer forma, o mais correto é declarar totalmente o tipo, tanto no tipo da variável quanto no objeto instanciado, desta forma:
List< String > list = new ArrayList< String >();
compilar, isso vai… so queria saber sobre as mensagens mas ja saquei valeu!!