-
[Java] Serializable 이란?Language/Java 2025. 4. 23. 17:50728x90반응형
✅ 자바에서 Serializable을 사용하는 이유
1. 객체를 저장하거나 전송할 수 있게 하기 위해
Serializable을 구현하면 자바 객체를 바이트 형태로 변환할 수 있어 다음과 같은 작업이 가능합니다:
- 파일에 저장
- 네트워크를 통해 전송
- 메모리에 저장하여 캐싱
2. 특정 상황에서 필요
- RMI(Remote Method Invocation)
- HTTP 세션 저장
- 객체 복사 시
✅ Serializable의 장점
- 간단한 구현 (
implements Serializable
) - 자바 표준 직렬화 도구 제공
- 재사용성 향상
✅ 사용 시 주의사항
serialVersionUID
명시 권장- 모든 필드는 직렬화 가능한 타입이어야 함
✅ 예제 코드
// Person.java import java.io.Serializable; public class Person implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String toString() { return name + " (" + age + "세)"; } }
// Main.java import java.io.*; public class Main { public static void main(String[] args) { Person p = new Person("홍길동", 30); // 직렬화: 객체를 파일에 저장 try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) { oos.writeObject(p); System.out.println("객체 저장 완료"); } catch (IOException e) { e.printStackTrace(); } // 역직렬화: 파일에서 객체를 읽어오기 try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) { Person read = (Person) ois.readObject(); System.out.println("읽은 객체: " + read); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } }
이 코드는
Person
객체를 파일에 저장한 뒤 다시 읽어오는 직렬화/역직렬화 예시입니다.728x90반응형'Language > Java' 카테고리의 다른 글
[Java] 리플렉션 (reflection) 에 대해 알아보자! (0) 2025.04.23