Apa sebenarnya arti suatu kelas Serializable
di Jawa? Atau secara umum, dalam hal ini ...
java
serializable
Ritwik Bose
sumber
sumber
Serializable
:Serializability of a class is enabled by the class implementing the java.io.Serializable interface. Classes that do not implement this interface will not have any of their state serialized or deserialized. All subtypes of a serializable class are themselves serializable. The serialization interface has no methods or fields and serves only to identify the semantics of being serializable.
Jawaban:
Serialisasi adalah mempertahankan objek dari memori ke urutan bit, misalnya untuk disimpan ke disk. Deserialisasi adalah sebaliknya - membaca data dari disk untuk melembabkan / membuat objek.
Dalam konteks pertanyaan Anda, ini adalah antarmuka yang jika diimplementasikan dalam kelas, kelas ini dapat secara otomatis diserialisasi dan diserialisasi oleh berbagai serializer.
sumber
Meskipun sebagian besar pengguna sudah memberikan jawaban, tetapi saya ingin menambahkan contoh bagi mereka yang membutuhkannya untuk menjelaskan ide:
Katakanlah Anda memiliki orang yang berkelas seperti berikut ini:
dan kemudian Anda membuat objek seperti ini:
Anda bisa membuat serial objek itu ke banyak aliran. Saya akan melakukannya untuk dua aliran:
Serialisasi ke output standar:
Serialisasi ke file:
Kemudian:
Deserialisasi dari file:
sumber
Ini berarti instance kelas dapat diubah menjadi byte-stream (misalnya, untuk disimpan ke file) dan kemudian dikonversi kembali ke kelas lagi. Pemuatan ulang ini dapat terjadi pada instance program yang berbeda, atau bahkan pada mesin yang berbeda. Serialisasi (dalam bahasa apa pun) melibatkan semua jenis masalah, terutama ketika Anda memiliki referensi ke objek lain di dalam serialisable.
sumber
Berikut adalah penjelasan rinci tentang Serialisasi : (blog saya sendiri)
Serialisasi:
Serialisasi adalah proses serialisasi keadaan suatu objek direpresentasikan dan disimpan dalam bentuk urutan byte. Ini dapat disimpan dalam file. Proses untuk membaca keadaan objek dari file dan mengembalikannya disebut deserialization.
Apa perlunya Serialisasi?
Dalam arsitektur modern, selalu ada kebutuhan untuk menyimpan keadaan objek dan kemudian mengambilnya. Sebagai contoh di Hibernate, untuk menyimpan objek kita harus membuat kelas Serializable. Apa yang dilakukannya, adalah bahwa begitu keadaan objek disimpan dalam bentuk byte, ia dapat ditransfer ke sistem lain yang kemudian dapat membaca dari keadaan dan mengambil kelas. Status objek dapat berasal dari database atau jvm yang berbeda atau dari komponen terpisah. Dengan bantuan Serialisasi kami dapat mengambil status Objek.
Contoh Kode dan penjelasan:
Pertama mari kita lihat di Kelas Item:
Dalam kode di atas dapat dilihat bahwa kelas Item mengimplementasikan Serializable .
Ini adalah antarmuka yang memungkinkan kelas menjadi serializable.
Sekarang kita bisa melihat variabel yang disebut serialVersionUID diinisialisasi ke variabel Long. Angka ini dihitung oleh kompiler berdasarkan status kelas dan atribut kelas. Ini adalah angka yang akan membantu jvm mengidentifikasi keadaan suatu objek ketika membaca keadaan objek dari file.
Untuk itu kita bisa melihat di Dokumentasi Oracle resmi:
Jika Anda perhatikan ada kata kunci lain yang kami gunakan yang sementara .
Jika suatu bidang tidak serializable, itu harus ditandai sementara. Di sini kami menandai itemCostPrice sebagai sementara dan tidak ingin itu ditulis dalam file
Sekarang mari kita lihat bagaimana cara menulis status suatu objek dalam file dan kemudian membacanya dari sana.
Pada contoh di atas kita dapat melihat contoh serialisasi dan deserialisasi objek.
Untuk itu kami menggunakan dua kelas. Untuk membuat serial objek, kami telah menggunakan ObjectOutputStream. Kami telah menggunakan metode writeObject untuk menulis objek dalam file.
Untuk Deserializing kami telah menggunakan ObjectInputStream yang membaca dari objek dari file. Ini menggunakan readObject untuk membaca data objek dari file.
Output dari kode di atas akan seperti:
Perhatikan bahwa itemCostPrice dari objek deserialized adalah null karena tidak ditulis.
sumber
Serialisasi melibatkan menyelamatkan keadaan saat ini dari suatu objek ke aliran, dan mengembalikan objek yang setara dari aliran itu. Aliran berfungsi sebagai wadah untuk objek
sumber
Serializable dipanggil seperti antarmuka tetapi lebih seperti bendera ke subsistem Serialisasi, saat runtime. Dikatakan objek ini bisa diselamatkan. Semua variabel instance Objects dengan pengecualian tidak ada objek serializable dan yang volatile mark akan disimpan.
Bayangkan aplikasi Anda dapat mengubah warna sebagai opsi, tanpa mempertahankan pengaturan eksternal itu Anda harus mengubah warna setiap kali Anda menjalankannya.
sumber
Serialisasi adalah teknik untuk menyimpan atau menulis objek dan data ke file. Dengan menggunakan
ObjectOutputStream
danFileOutputStream
kelas. Kelas-kelas ini memiliki metode khusus untuk bertahan objek. SukawriteObject();
untuk penjelasan yang jelas dengan angka-angka. Lihat Di Sini untuk info lebih lanjut
sumber
Untuk mempresentasikan dari perspektif lain. Serialisasi adalah sejenis antarmuka yang disebut 'antarmuka penanda'. Antarmuka penanda adalah antarmuka yang tidak mengandung deklarasi metode, tetapi hanya menunjuk (atau "menandai") kelas yang mengimplementasikan antarmuka sebagai memiliki beberapa properti. Jika Anda memahami polimorfisme, ini akan sangat masuk akal. Dalam kasus antarmuka penanda Serializable, metode ObjectOutputStream.write (Objek) akan gagal jika argumennya tidak mengimplementasikan antarmuka. Ini adalah kesalahan potensial di java, bisa saja ObjectOutputStream.write (Serializable)
Sangat Dianjurkan: Membaca Item 37 dari Java Efektif oleh Joshua Bloch untuk mempelajari lebih lanjut.
sumber
Serialisasi: Menulis Status Objek ke File / Jaringan atau di mana saja. (Mean Java Object bentuk yang didukung ke File formulir yang didukung atau bentuk jaringan yang didukung)
Deserialisasi: Status Pembacaan Objek dari File / Jaringan atau di mana saja. (Mean File / Jaringan Didukung formulir ke Java Didukung Formulir)
sumber
Hanya untuk menambah jawaban lain dan berkaitan dengan generalitas. Serialisasi terkadang dikenal sebagai pengarsipan, misalnya dalam Objective-C.
sumber