Rumah Java javaTutorial Pembangunan Java: Cara menggunakan mekanisme pantulan untuk melaksanakan bersiri dan penyahserialisasian objek

Pembangunan Java: Cara menggunakan mekanisme pantulan untuk melaksanakan bersiri dan penyahserialisasian objek

Sep 21, 2023 am 11:06 AM
refleksi bersiri Penyahserialisasian

Pembangunan Java: Cara menggunakan mekanisme pantulan untuk melaksanakan bersiri dan penyahserialisasian objek

Pembangunan Java: Cara menggunakan mekanisme pantulan untuk mencapai pensirilan dan penyahserikan objek

Pensirilan dan penyahserikatan dibangunkan di Java Konsep yang sering digunakan dalam , mereka menukar objek kepada urutan bait untuk penghantaran melalui rangkaian atau menyimpan ke cakera. Java menyediakan mekanisme bersiri terbina dalam, tetapi dalam beberapa kes, kita mungkin memerlukan cara yang lebih fleksibel untuk melaksanakan pensirilan dan penyahsirilan objek. Mekanisme pantulan boleh membantu kami memperoleh maklumat kelas secara dinamik dan mengendalikan sifat dan kaedahnya semasa masa jalan, supaya ia boleh digunakan untuk melaksanakan pensirilan objek dan penyahserikatan.

Untuk menggunakan mekanisme pantulan untuk melaksanakan pensirilan dan penyahserikatan objek, kami memerlukan langkah berikut:

Langkah 1: Tentukan kelas Java untuk disiri# 🎜🎜#Kami mula-mula tentukan kelas Java untuk bersiri, seperti Person, yang mempunyai beberapa sifat dan kaedah.

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
Salin selepas log masuk

Langkah 2: Kaedah untuk melaksanakan bersiri dan penyahserikatan

Kami boleh mencipta kelas, seperti SerializationUtil, yang mengandungi kaedah statik untuk melaksanakan bersiri dan penyahserilan.

import java.lang.reflect.Field;

public class SerializationUtil {
    public static byte[] serialize(Object obj) throws Exception {
        Class<?> cls = obj.getClass();
        Field[] fields = cls.getDeclaredFields();

        byte[] bytes = new byte[fields.length * 4];
        for (int i = 0; i < fields.length; i++) {
            fields[i].setAccessible(true);
            if (fields[i].getType() == int.class) {
                int value = fields[i].getInt(obj);
                int offset = i * 4;
                bytes[offset] = (byte) (value >> 24);
                bytes[offset + 1] = (byte) (value >> 16);
                bytes[offset + 2] = (byte) (value >> 8);
                bytes[offset + 3] = (byte) value;
            }
        }
        return bytes;
    }

    public static Object deserialize(byte[] bytes, Class<?> cls) throws Exception {
        Object obj = cls.newInstance();
        Field[] fields = cls.getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            fields[i].setAccessible(true);
            if (fields[i].getType() == int.class) {
                int offset = i * 4;
                int value = (bytes[offset] << 24) | ((bytes[offset + 1] & 0xFF) << 16) | ((bytes[offset + 2] & 0xFF) << 8) | (bytes[offset + 3] & 0xFF);
                fields[i].setInt(obj, value);
            }
        }
        return obj;
    }
}
Salin selepas log masuk

Langkah Tiga: Ujian Pensirilan dan Penyahserilan

Kami boleh menulis kelas ujian mudah untuk menguji sama ada kaedah pensirilan dan penyahserikatan kami berfungsi dengan betul.

public class Main {
    public static void main(String[] args) {
        try {
            Person person = new Person("Alice", 25);

            // 序列化
            byte[] bytes = SerializationUtil.serialize(person);
            // 反序列化
            Person deserializedPerson = (Person) SerializationUtil.deserialize(bytes, Person.class);

            System.out.println("Name: " + deserializedPerson.getName());
            System.out.println("Age: " + deserializedPerson.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Salin selepas log masuk

Menjalankan kod di atas, kita dapat melihat bahawa output ialah:

Name: Alice
Age: 25
Salin selepas log masuk

Dengan menggunakan mekanisme pantulan, kami berjaya melaksanakan siri dan penyahserialisasian objek. Dalam kaedah bersiri, kami merentasi semua atribut kelas, dan jika jenis atribut adalah int, tukarkannya kepada jujukan bait dalam kaedah penyahserikatan, kami memulihkan nilai objek mengikut urutan dan set bait ia kepada sifat On yang sepadan.

Walaupun kami hanya bersiri sifat jenis int dalam contoh ini, kami boleh melanjutkan kaedah ini untuk menyokong lebih banyak jenis sifat mengikut keperluan. Pada masa yang sama, mekanisme pantulan juga memberikan kami lebih fleksibiliti untuk mengendalikan sifat dan kaedah secara dinamik pada masa jalan.

Ringkasnya, menggunakan mekanisme pantulan untuk mencapai pensirilan dan penyahserikan objek ialah kaedah yang fleksibel dan berkuasa, yang boleh membantu kami mengendalikan penukaran data dan penyahserikan objek dalam isu-isu penghantaran Java.

Atas ialah kandungan terperinci Pembangunan Java: Cara menggunakan mekanisme pantulan untuk melaksanakan bersiri dan penyahserialisasian objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pelaksanaan mekanisme refleksi antara muka dan kelas abstrak di Jawa Pelaksanaan mekanisme refleksi antara muka dan kelas abstrak di Jawa May 02, 2024 pm 05:18 PM

Mekanisme pantulan membenarkan atur cara untuk mendapatkan dan mengubah suai maklumat kelas semasa runtime Ia boleh digunakan untuk melaksanakan refleksi antara muka dan kelas abstrak: Refleksi antara muka: mendapatkan objek pantulan antara muka melalui Class.forName() dan mengakses metadatanya (nama, kaedah dan. padang). Refleksi kelas abstrak: Sama seperti antara muka, anda boleh mendapatkan objek pantulan kelas abstrak dan mengakses metadata dan kaedah bukan abstraknya. Kes praktikal: Mekanisme pantulan boleh digunakan untuk melaksanakan proksi dinamik dan memintas panggilan ke kaedah antara muka pada masa jalan dengan mencipta kelas proksi secara dinamik.

Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang May 03, 2024 pm 12:15 PM

Anda boleh menggunakan refleksi untuk mengakses medan dan kaedah peribadi dalam bahasa Go: Untuk mengakses medan peribadi: dapatkan nilai pantulan nilai melalui reflect.ValueOf(), kemudian gunakan FieldByName() untuk mendapatkan nilai pantulan medan dan panggil Kaedah String() untuk mencetak nilai medan . Panggil kaedah persendirian: dapatkan juga nilai pantulan nilai melalui reflect.ValueOf(), kemudian gunakan MethodByName() untuk mendapatkan nilai pantulan kaedah, dan akhirnya panggil kaedah Call() untuk melaksanakan kaedah. Kes praktikal: Ubah suai nilai medan persendirian dan panggil kaedah persendirian melalui refleksi untuk mencapai kawalan objek dan liputan ujian unit.

Cara menggunakan pantulan untuk mengubah suai nilai pembolehubah secara dinamik dalam golang Cara menggunakan pantulan untuk mengubah suai nilai pembolehubah secara dinamik dalam golang May 02, 2024 am 11:09 AM

Refleksi bahasa Go membolehkan anda memanipulasi nilai pembolehubah pada masa jalan, termasuk mengubah suai nilai Boolean, integer, nombor titik terapung dan rentetan. Dengan mendapatkan Nilai pembolehubah, anda boleh memanggil kaedah SetBool, SetInt, SetFloat dan SetString untuk mengubah suainya. Sebagai contoh, anda boleh menghuraikan rentetan JSON ke dalam struktur dan kemudian menggunakan refleksi untuk mengubah suai nilai medan struktur. Perlu diingatkan bahawa operasi pantulan adalah perlahan dan medan yang tidak boleh diubah suai tidak boleh diubah suai Apabila mengubah nilai medan struktur, medan yang berkaitan mungkin tidak dikemas kini secara automatik.

Pertimbangan keselamatan dan penyelesaian terbaik untuk refleksi golang Pertimbangan keselamatan dan penyelesaian terbaik untuk refleksi golang May 04, 2024 pm 04:48 PM

Reflection menyediakan keupayaan menyemak jenis dan pengubahsuaian dalam Go, tetapi ia mempunyai risiko keselamatan, termasuk pelaksanaan kod sewenang-wenangnya, pemalsuan jenis dan kebocoran data. Amalan terbaik termasuk mengehadkan kebenaran reflektif, operasi, menggunakan senarai putih atau senarai hitam, mengesahkan input dan menggunakan alat keselamatan. Dalam amalan, refleksi boleh digunakan dengan selamat untuk memeriksa maklumat jenis.

Pengenalan kepada refleksi Golang dan analisis senario aplikasi Pengenalan kepada refleksi Golang dan analisis senario aplikasi Apr 03, 2024 pm 01:45 PM

Ciri pantulan dalam bahasa Go membolehkan program untuk memeriksa dan mengubah suai struktur sesuatu jenis pada masa jalan. Dengan menggunakan Type, Value dan reflect.Kind, kita boleh mendapatkan maklumat jenis, nilai medan dan kaedah objek, dan kita juga boleh mencipta dan mengubah suai objek. Kaedah operasi khusus termasuk: jenis menyemak (TypeOf()), mendapatkan nilai medan (ValueOf(), FieldByName()), mengubah suai nilai medan (Set()), dan mencipta objek (New()).

Bagaimanakah siri Java mempengaruhi prestasi? Bagaimanakah siri Java mempengaruhi prestasi? Apr 16, 2024 pm 06:36 PM

Kesan siri pada prestasi Java: Proses siri bergantung pada refleksi, yang akan menjejaskan prestasi dengan ketara. Serialisasi memerlukan penciptaan aliran bait untuk menyimpan data objek, mengakibatkan peruntukan memori dan kos pemprosesan. Mensiri objek besar menggunakan banyak memori dan masa. Objek bersiri meningkatkan beban apabila dihantar melalui rangkaian.

Cara menggunakan refleksi untuk mencipta jenis baharu dalam golang Cara menggunakan refleksi untuk mencipta jenis baharu dalam golang May 01, 2024 am 09:21 AM

Menggunakan refleksi, Go membolehkan penciptaan jenis baharu 1. Gunakan reflect.TypeOf() untuk mendapatkan nilai reflect.Type jenis sedia ada 2. Gunakan reflect.New() untuk mencipta nilai penunjuk jenis baharu; . Melalui *Ptr.Elem( ) untuk mengakses nilai sebenar; 4. Refleksi juga boleh mencipta jenis baharu secara dinamik berdasarkan rentetan, yang digunakan untuk membina atur cara yang fleksibel dan dinamik.

Bagaimanakah pustaka fungsi C++ melakukan pensirilan dan penyahserikatan? Bagaimanakah pustaka fungsi C++ melakukan pensirilan dan penyahserikatan? Apr 18, 2024 am 10:06 AM

Panduan Pensirilan dan Penyahserikatan Perpustakaan C++ Pensirian: Mencipta aliran output dan menukarnya kepada format arkib. Mensiri objek ke dalam arkib. Penyahserialisasian: Mencipta aliran input dan memulihkannya daripada format arkib. Nyahserialisasi objek daripada arkib. Contoh praktikal: Serialisasi: Mencipta aliran keluaran. Buat objek arkib. Cipta dan sirikan objek ke dalam arkib. Penyahserikatan: Buat aliran input. Buat objek arkib. Cipta objek dan deserialisasikannya daripada arkib.

See all articles