O que significa esse erro

8 respostas
LPJava

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…

8 Respostas

Deh

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… =]

LPJava

:?

Y

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”.

LPJava

isso tudo aconteceu pq nao disse o tipo especifico de minha list?

List<String> lit = new ArraysList();

apenas por isso?

Adriano_Almeida

camilolopes:

apenas por isso?

Yeahh…

LPJava

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!

Y

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 >();
LPJava

compilar, isso vai… so queria saber sobre as mensagens mas ja saquei valeu!!

Criado 6 de janeiro de 2007
Ultima resposta 7 de jan. de 2007
Respostas 8
Participantes 4