
Serializable::serialize 메서드는 Serializable 인터페이스를 구현한 클래스의 객체를 바이트 스트림으로 변환하는 역할을 합니다.
이 메서드는 객체의 상태를 저장하는 역할을 하며, 객체의 필드 값을 바이트 스트림으로 변환하여 저장합니다.
이 변환은 객체의 필드 값이 변경되지 않도록 보장하기 위해, 객체의 내부 상태를 직렬화하여 저장합니다.
직렬화란, 객체의 내부 상태를 바이트 스트림으로 변환하는 과정을 의미합니다.
예를 들어, 객체의 필드가 int, float, string 등 기본 타입의 데이터라면, 직렬화는 해당 데이터의 값을 바이트 스트림으로 변환하는 단순한 과정이지만, 객체의 필드가 객체 자체라면, 해당 객체의 내부 상태까지 직렬화해야 합니다.
Serializable::serialize 메서드는 ObjectOutputStream 클래스를 사용하여 객체를 바이트 스트림으로 변환합니다.
ObjectOutputStream 클래스는 객체를 바이트 스트림으로 변환하는 역할을 하는 클래스입니다.
이 클래스는 객체의 필드 값을 바이트 스트림으로 변환하여 저장합니다.
예를 들어, 다음 코드는 Person 클래스의 객체를 바이트 스트림으로 변환하는 예시입니다.
#hostingforum.kr
java
import java.io.*;
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 int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) throws IOException {
Person person = new Person("John", 30);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(person);
oos.flush();
byte[] bytes = bos.toByteArray();
System.out.println(bytes.length);
}
}
이 코드는 Person 클래스의 객체를 바이트 스트림으로 변환하여 저장합니다.
바이트 스트림의 길이를 출력하여, 객체의 내부 상태가 바이트 스트림으로 변환된 것을 확인할 수 있습니다.
Serializable::serialize 메서드는 객체의 내부 상태를 저장하는 역할을 하며, 객체의 필드 값을 바이트 스트림으로 변환하여 저장합니다.
이 변환은 객체의 필드 값이 변경되지 않도록 보장하기 위해, 객체의 내부 상태를 직렬화하여 저장합니다.
2025-05-25 20:26