Rumah >Java >javaTutorial >Kaedah pelaksanaan penyiaran dan penyahserikatan dalam bahasa Java

Kaedah pelaksanaan penyiaran dan penyahserikatan dalam bahasa Java

WBOY
WBOYasal
2023-06-10 21:33:42849semak imbas

Bahasa Java ialah bahasa pengaturcaraan berorientasikan objek yang bebas platform, mudah dipelajari dan digunakan serta sangat boleh dipercayai. Antaranya, pensirilan objek dan penyahserikatan adalah fungsi yang sangat penting dalam bahasa Java, yang boleh menghantar atau menyimpan objek dengan mudah dalam JVM yang berbeza. Artikel ini akan memperkenalkan kaedah pelaksanaan pensirilan dan penyahserilangan bahasa Java.

1. Konsep serialisasi

Serialization merujuk kepada proses menukar objek kepada jujukan bait supaya ia boleh dihantar atau disimpan pada rangkaian. Proses bersiri boleh menukar objek Java ke dalam format biasa, seperti XML, JSON, aliran binari, dll., untuk penghantaran dan pemprosesan pada platform yang berbeza. Dalam bahasa Java, serialisasi boleh dilaksanakan menggunakan antara muka Java.io.Serializable.

2. Antara muka Java.io.Serializable

Antara muka Java.io.Serializable ialah antara muka penandaan yang disediakan oleh bahasa Java, yang digunakan untuk menandakan kelas sebagai boleh bersiri. Hanya kelas yang melaksanakan antara muka ini boleh melakukan operasi bersiri dan penyahsirilan. Antara muka ini tidak melaksanakan sebarang kaedah, ia hanya berfungsi sebagai penanda untuk memberitahu JVM bahawa kelas ini boleh bersiri.

Kelas yang melaksanakan antara muka Java.io.Serializable mesti memenuhi syarat berikut:
1. Kelas mesti boleh bersiri, iaitu keadaannya boleh ditulis kepada strim bait.
2. Kelas mesti mempunyai pembina tanpa parameter.
3. Semua pembolehubah ahli bukan statik kelas ini mestilah boleh bersiri.

Sebagai contoh, berikut ialah contoh kelas yang melaksanakan antara muka Java.io.Serializable:

import java.io.Serializable;

public class Person implements Serializable {
    private String name; // 可序列化的成员变量
    private int age; // 可序列化的成员变量

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

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

    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

3 Kaedah pelaksanaan Serialisasi

Bahasa Java menyediakan dua Kaedah pelaksanaan siri: kelas Java.io.ObjectOutputStream dan kelas Java.io.ByteArrayOutputStream.

  1. Kelas Java.io.ObjectOutputStream

Kelas Java.io.ObjectOutputStream ialah kelas bersiri yang disediakan oleh bahasa Java. Kelas ini menyediakan kaedah untuk menyerikan objek Java ke dalam aliran bait dan kemungkinan untuk menulis bait ini ke dalam OutputStream. Berikut ialah contoh kaedah yang mensiri objek Orang ke dalam strim bait dan menulisnya pada fail:

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class SerializeDemo {
    public static void main(String[] args) {
        Person person = new Person("Tom", 20);

        try {
            FileOutputStream fos = new FileOutputStream("person.ser");
            ObjectOutputStream oos = new ObjectOutputStream(fos);

            oos.writeObject(person);

            oos.close();
            fos.close();

            System.out.println("Person对象已经序列化到person.ser中。");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  1. kelas Java.io.ByteArrayOutputStream

Java. io. Kelas ByteArrayOutputStream ialah kelas yang disediakan oleh bahasa Java untuk bersiri. Kelas ini menyediakan kaedah untuk menyerikan objek Java ke dalam tatasusunan bait dan kemungkinan untuk menyimpan bait ini ke dalam ByteArrayOutputStream. Berikut ialah contoh kaedah yang mensirikan objek Person ke dalam aliran bait dan menyimpannya dalam tatasusunan bait:

import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;

public class SerializeDemo {
    public static void main(String[] args) {
        Person person = new Person("Tom", 20);

        try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(bos);

            oos.writeObject(person);

            byte[] byteArray = bos.toByteArray();

            oos.close();
            bos.close();

            System.out.println("Person对象已经序列化到字节数组中。");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4. Kaedah pelaksanaan penyahserikatan

Bahasa Java menyediakan dua Tiga penyahserikatan kaedah pelaksanaan: kelas Java.io.ObjectInputStream dan kelas Java.io.ByteArrayInputStream.

  1. Kelas Java.io.ObjectInputStream

Kelas Java.io.ObjectInputStream ialah kelas penyahserikatan yang disediakan oleh bahasa Java. Kelas ini menyediakan kaedah untuk membaca bait daripada InputStream dan menyahsirikannya ke dalam objek Java. Berikut ialah contoh kaedah yang membaca strim bait daripada fail dan menyahsirikannya menjadi objek Orang:

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class DeserializeDemo {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("person.ser");
            ObjectInputStream ois = new ObjectInputStream(fis);

            Person person = (Person) ois.readObject();

            ois.close();
            fis.close();

            System.out.println("从person.ser文件中反序列化出了一个Person对象。");
            System.out.println("Person对象的name是:" + person.getName());
            System.out.println("Person对象的age是:" + person.getAge());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  1. kelas Java.io.ByteArrayInputStream

Java. Kelas io.ByteArrayInputStream ialah kelas yang disediakan oleh bahasa Java untuk penyahserikatan. Kelas ini menyediakan kaedah untuk membaca bait daripada tatasusunan bait dan menyahsirikannya ke dalam objek Java. Berikut ialah contoh kaedah untuk menyahsiri tatasusunan bait menjadi objek Orang:

import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;

public class DeserializeDemo {
    public static void main(String[] args) {
        try {
            Person person = null;
            byte[] byteArray = // 从其他途径获取的Person对象的字节数组

            ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
            ObjectInputStream ois = new ObjectInputStream(bais);

            person = (Person) ois.readObject();

            ois.close();
            bais.close();

            System.out.println("从字节数组中反序列化出了一个Person对象。");
            System.out.println("Person对象的name是:" + person.getName());
            System.out.println("Person对象的age是:" + person.getAge());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Ringkasnya, fungsi bersiri dan penyahserikan bahasa Java ialah fungsi yang sangat penting, yang boleh menukar objek dengan mudah dalam pelbagai Pindahkan atau simpan dalam JVM. Pensirian dan penyahserikatan dicapai dengan melaksanakan antara muka Java.io.Serializable dan menggunakan kelas Java.io.ObjectOutputStream dan kelas Java.io.ObjectInputStream. Pada masa yang sama, kelas Java.io.ByteArrayOutputStream dan Java.io.ByteArrayInputStream juga boleh melaksanakan operasi ini.

Atas ialah kandungan terperinci Kaedah pelaksanaan penyiaran dan penyahserikatan dalam bahasa Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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