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!!
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
bruto
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.