h1

Penanda Objek Serializable

12 Februari 2010

Ketika saya mencoba membuat sebuah class yang mengimplementasikan serializable, saya mendapati pesan warning seperti berikut : the serializable class EmployeeForm  does not declare a static final serialVersionUID field of type long.
Apa yang salah ? Oya saya menggunakan Editor Eclipse SDK Version: 3.3.2 dengan JDK 1.6.0_13.

pesan kesalahan di eclipse
pesan kesalahan di eclipse

Selidik punya selidik ternyata karena saya tidak memperlakukan class yang di serializable sebagai mana mestinya. Saat object di-serialize, maka dibuat sebuah “fingerprint” yang disebut serialVersionUID berupa 64-bit data. SerialVersionUID ini diperlukan saat proses deserialization untuk memverifikasi pengirim dan penerima dari object tersebut.

Ketika penerima me-load class dari object yang memiliki serialVersionUID yang berbeda dari class penerima, proses  deserialization akan menghasilkan sebuah InvalidClassException. Kita dapat membuat serialVersionUID sendiri dari awal pada serializable object dengan menambahkan field long bernilai sembarang seperti ini:

static final long serialVersionUID = 4070409649129120458L;

Ingat bahwa variable serialVersionUID harus bertipe long, static dan final. Bila class serializable tidak mendefinisikan secara explicit sebuah  serialVersionUID, maka serialization runtime kan menghitung nilai default serialVersionUID  untuk class tersebut berdasarkan berbagai aspek dari class tersebut. Silakan lihat di Java(TM) Object Serialization Specification. Akan tetapi disarankan agar semua class serializable mendeklarasikan nilai serialVersionUID secara eksplisit, karena proses perhitungan default serialVersionUID sangat bergantung pada keunikan/detail class dan compiler. Bisa saja suatu ketika di compiler yang berbeda melakukan kesalahan perhitungan dan menghasilkan InvalidClassExceptions selama deserialization.

Saran Perbaikan :

Ada cara mudah untuk memperbaiki pesan warning ini di Eclipse.

  1. Pilih nama class dan tekan Ctrl-1 bersamaan
  2. Anda dapat memilih  “Add default serial version ID” atau “Add generated serial version ID” yang akan ditambahkan dalam field

Sumber  http://www.tek-tips.com/viewthread.cfm?qid=1093498&page=2

Iklan

One comment

  1. kalau mo pake serializeable, lebih baik pake yg generated, karena itu unik… tapi pake yg default jg sejauh ini blom pernah nemu error seh :p



Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: