Warning: Add default serial version ID

9 respostas
dsiviotti

Pessoal, há pouco tempo eu instalei o Eclipse que dá suporte a java 5.0. Algumas de minhas classes ficaram com o seguinte warning:

  • Add defaul serial version ID
  • Add generate serial version ID

Isso tem a ver com o java 5.0 ou é coisa do Eclipse? Qual seria o propósito de uma serial version ID?

EDITADO:
Achei a opção no Eclipse que desliga esse warning, mas gostaria de saber por que criar um serial version ID.

9 Respostas

Ironlynx

Este campo faz parte da especificação da interface de marcação Serializable para que o framework de persistência da JVM identifique de forma única um objeto. Dah uma bisoiada lah:
http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html

marcioa1

dsiviotti,

Caso queira inibir este aviso, vá em Window > Preferences > Java > Compiler ? Erros/Warning > J2SE 5.0 Options e desmarque lá dentro

Márcio

cv1

Precisa dizer que nao eh uma boa ideia desabilitar warnings?

fredferrao

aproveitando o topico!! qual o versao do Eclipse que suporta o java 5(que eh o 1.5_xx certo??), mas qual eh a versao do eclipse!!

Obrigado!!

cv1

A mais recente, ueh.

marcioa1

fredferrao,

O Eclipse suporta java5 a partir da versão 3.1

cv,

Concorde em deixar os warnings. Você pode me ajudar no seguinte warning ?

public Object getValueAt(int aRow, int aColumn) { Vector row = (Vector)rows.elementAt(aRow); Object saida = null; switch (aColumn){ case POSICAO : return (Integer)row.elementAt(aColumn); case SELECIONADO : return (Boolean)row.elementAt(aColumn); case NUMERO_LOTE: case NOME_DIVULGACAO: return (String)row.elementAt(aColumn); case DATA_VENCIMENTO: String aux = (String)row.elementAt(aColumn); return aux.substring(6,8) + "/" + aux.substring(4,6) + "/" + aux.substring(0,4); default: return row.elementAt(aColumn); } }

Severity Description Resource In Folder Location Creation Time 1 Type safety: The method elementAt(int) belongs to the raw type Vector. References to generic type Vector<E> should be parameterized TabelaDeExtrato.java Extrato/src/model line 60 3 de Junho de 2005 10:07:38

Diz respeito a generics, e estou recebendo uma série deles nos meu tableModels.

Obrigado,

Márcio

cv1

marcioa1:
Concorde em deixar os warnings. Você pode me ajudar no seguinte warning ?

public Object getValueAt(int aRow, int aColumn) { Vector row = (Vector)rows.elementAt(aRow); Object saida = null; switch (aColumn){ case POSICAO : return (Integer)row.elementAt(aColumn); case SELECIONADO : return (Boolean)row.elementAt(aColumn); case NUMERO_LOTE: case NOME_DIVULGACAO: return (String)row.elementAt(aColumn); case DATA_VENCIMENTO: String aux = (String)row.elementAt(aColumn); return aux.substring(6,8) + "/" + aux.substring(4,6) + "/" + aux.substring(0,4); default: return row.elementAt(aColumn); } }

De fato, tem a ver com os generics. Note que na linha 2 vc pega um Vector, que nao eh parametrizado:

Vector row = (Vector)rows.elementAt(aRow);

Pra se livrar desse warning, o melhor jeito eh modificar o seu cast:

Vector<Object> row = (Vector<Object>)rows.elementAt(aRow); Object saida = null; switch (aColumn){ case POSICAO : return row.elementAt(aColumn); case SELECIONADO : return row.elementAt(aColumn); case NUMERO_LOTE: case NOME_DIVULGACAO: return row.elementAt(aColumn); case DATA_VENCIMENTO: String aux = (String)row.elementAt(aColumn); return aux.substring(6,8) + "/" + aux.substring(4,6) + "/" + aux.substring(0,4); default: return row.elementAt(aColumn); }

Ah, e os casts nos returns eram desnecessarios - vc ta retornando Object de qqer jeito - alias, tem um warning no Eclipse pra isso tb. Voce habilitou o dito? :wink:

fredferrao

Valeu marcio!! to baixando a versao: eclipse-SDK-3.1RC1-win32

marcioa1

cv,

Aundo coloquei <Object> , começõu a dar outro warning.

Agora estou com o seguinte c~´odigo ( sem warnings )

public Object getValueAt(int aRow, int aColumn) { Vector<?> row = (Vector<?>)rows.elementAt(aRow); return row.elementAt(aColumn); }

Mas o seguinte método está dando outro warning

public void setValueAt(Object o, int aRow, int aColumn){ Vector<Object> row = (Vector<Object>)rows.elementAt(aRow); row.setElementAt(o,aColumn); }

Severity Description Resource In Folder Location Creation Time 1 Type safety: The cast from Object to Vector<Object> is actually checking against the erased type Vector ModeloTabela.java Protocolo Dinâmico/src/modelo line 67 3 de Junho de 2005 10:35:00
se coloco ? no lugar de Object, levo um erro.

Tem alguma sugestão de como consertar isto ?

Obrigado,

Márcio

Criado 3 de junho de 2005
Ultima resposta 3 de jun. de 2005
Respostas 9
Participantes 5