Ketika Anda menggunakan serialVersionUID (1L) daripada menghasilkan serialVersionUID (3567653491060394677L) Anda mengatakan sesuatu.
Anda mengatakan bahwa Anda 100% yakin bahwa tidak ada sistem yang akan menyentuh kelas ini yang memiliki versi serial yang tidak kompatibel dari kelas ini dengan nomor versi 1.
Jika Anda dapat memikirkan alasan apa pun untuk riwayat versi serialnya menjadi tidak dikenal, itu mungkin sulit dikatakan dengan percaya diri. Dalam masa hidupnya, kelas yang sukses akan dipertahankan oleh banyak orang, tinggal di banyak proyek, dan tinggal di banyak sistem.
Anda bisa menderita karenanya. Atau Anda bisa bermain lotre dengan harapan kalah. Jika Anda menghasilkan versi, Anda memiliki peluang kecil untuk kesalahan. Jika Anda menganggap "Hei, saya yakin belum ada yang menggunakan 1" peluang Anda lebih besar dari kecil. Justru karena kita semua berpikir 0 dan 1 itu keren sehingga Anda memiliki peluang lebih tinggi untuk memukulnya.
-
Ketika Anda menghasilkan serialVersionUID (3567653491060394677L) daripada menggunakan serialVersionUID (1L) Anda mengatakan sesuatu.
Anda mengatakan bahwa orang mungkin telah membuat atau membuat nomor versi lain secara manual selama sejarah kelas ini dan Anda tidak peduli karena Longs membuat angka besar.
Bagaimanapun, kecuali jika Anda benar-benar tahu sejarah nomor versi yang digunakan ketika membuat serial kelas di seluruh alam semesta di mana ia memiliki atau akan pernah ada, Anda mengambil risiko. Jika Anda punya waktu untuk memastikan 100% yakin 1 adalah AOK, lakukan saja. Jika itu terlalu sulit, silakan dan hasilkan secara buta. Anda lebih mungkin memenangkan lotre daripada melakukan kesalahan. Jika ya, beri tahu saya dan saya akan membelikan Anda bir.
Dengan semua pembicaraan tentang bermain lotre ini saya mungkin telah memberi Anda kesan bahwa serialVersionUID dibuat secara acak. Bahkan selama rentang angka didistribusikan secara merata untuk setiap nilai yang mungkin dari Long yang akan baik-baik saja. Namun, sebenarnya dilakukan dengan cara ini:
http://docs.oracle.com/javase/6/docs/platform/serialization/spec/class.html#4100
Satu-satunya perbedaan yang Anda dapatkan dengan itu adalah Anda tidak perlu sumber acak. Anda menggunakan perubahan di kelas itu sendiri untuk mengubah hasilnya. Namun menurut prinsip pigeonhole masih ada kemungkinan bisa salah dan bertabrakan. Sangat tidak mungkin. Jadi, semoga sukses membuat saya minum bir.
Namun, bahkan jika kelas hanya akan hidup dalam satu sistem dan satu basis kode, berpikir bahwa penambahan angka dengan tangan memberi Anda kesempatan nol tabrakan hanya berarti Anda tidak mengerti manusia. :)