Alguém sabe o que significa este warning?

5 respostas
NapoCoelho

Passei recentemente para o sdk 1.5.0 e tem dado um warning na compilação de um programa aqui, o warning é o seguinte:

“D:Documents and SettingsJunioDesktopProjeto JavaProgram.java:8: warning: [serial] serializable class Program has no definition of serialVersionUID
public class Program extends javax.swing.JFrame implements java.util.Observer”

Gostaria de saber o que está causando este warning e como eu faço para tirá-lo!! Valeu!!

5 Respostas

Rafael_Steil

serialVersionUID eh usado para identificar os objetos Serializable. Para “acabar” com este warning, basta voce declarar esta var na tua classe e atribuir um valor inicial. Mas eh aconselhavel que voce saiba as conseguencias disso ao usar. De uma lida na especificacao do java.io.Serializable.

Rafael

danieldestro

O Java 1.5 pede isso agora?

O que será dos softwares que migrarem agora? Um puta trabalhão, heim!

Rafael_Steil

Bom, eh soh um warning, de qualquer maneira. Nao precisa alterar source existente. Isso sempre existiu, mas nas versoes anteriores nao era, digamos assim, tao explicito a existencia / uso ( claro, levando em consideracao que a maior parte do pessoal ignora a existencia da API )

Rafael

B

Que problemas exatamente a falta de serialVersionUID pode gerar?

Rafael_Steil

Migracao de objetos.

Quando voce seriailiza um objeto, eh gerado um identificador para ele. Se, em algum momento, voce alterar a estrutura da classe, e entao tentar recriar o objeto a partir do conteudo serializado, voce ira ter alguns problemas, uma vez que o serial nao vai bater.

Ao declarar o serial com algum valor fixo, como 0, por exemplo, voce esta explicitamente dizendo que o objeto sempre sera igual. Claro que voce ainda tera que lidar com as diferencas que porventura venham a ser realizadas.

Rafael

Criado 7 de julho de 2004
Ultima resposta 8 de jul. de 2004
Respostas 5
Participantes 4