AI Academy
프로모션
CodeGym University
학습
강좌
과제
설문 & 퀴즈
게임
도움말
일정
커뮤니티
사용자
포럼
채팅
아티클
성공 사례
활동
후기
구독
라이트 테마
강의
리뷰
회사 소개
시작
학습 시작
Start learning now
진행 상황
코스
퀘스트 맵
레슨
Java 25
Java 25
레벨 43
직렬화 프로세스 제어: writeObject, readObject
JAVA 25 SELF
레벨 43,
레슨 0
표준 직렬화를 가로채고 프로세스를 직접 제어하는 방법: 엄격한 시그니처를 가진 프라이빗 메서드
writeObject
/
readObject
를 사용하고 (
private
void
writeObject
(
ObjectOutputStream
out)
throws
IOException
),
defaultWriteObject()
/
defaultReadObject()
를 호출하며,
transient
로 필드를 제외하고, 체크섬과 로그를 추가하며,
serialVersionUID
와 버전 호환성도 잊지 않습니다.
ObjectOutputStream
/
ObjectInputStream
사용과 대표적인 오류, 실용적인 예제를 다룹니다.
transient 필드, serialVersionUID
JAVA 25 SELF
레벨 43,
레슨 1
Java에서의 직렬화 실무 가이드: 필드를 스트림에서 제외하기 위해
transient
를 언제 어떻게 사용할지, 역직렬화 시 무엇이 일어나는지(기본값), 메서드
readObject
에서 상태를 어떻게 복원할지;
serialVersionUID
가 무엇이며, 이를 어떻게 선언하는지(
private static final long
serialVersionUID
=
1L
), 언제 변경해야 하는지와 왜 명시적으로 지정하는 편이 더 좋은지. 동작하는 예제, 위험한 시나리오, 그리고 흔한 실수를 함께 다룹니다.
Externalizable: 직렬화를 세밀하게 제어하기
JAVA 25 SELF
레벨 43,
레슨 2
Java의 기본 직렬화를 확장합니다: 자동 직렬화인
Serializable
만으로 부족할 때는
Externalizable
계약과
writeExternal
/
readExternal
메서드가 도움이 됩니다. 이 강의에서는 데이터 포맷을 완전히 제어하는 방법, 파일 크기를 줄이고 하위 호환성을 유지하는 방법을 다루며,
ObjectOutputStream
/
ObjectInputStream
스트림과 비교하고, 예시, 장단점, 그리고 흔한 실수들(필수인
public
무인자 생성자, 기록/읽기 순서 등)을 보여줍니다.
직렬화 동작 조정: 커스텀 메서드
JAVA 25 SELF
레벨 43,
레슨 3
이 강의에서는 Java에서
writeReplace
와
readResolve
메서드를 사용해 직렬화와 역직렬화 과정을 제어하는 방법을 다룹니다: 왜 객체를 프록시로 대체하는지, 싱글턴을 어떻게 보존하는지, 불변 객체를 어떻게 처리하는지, 그리고 이것이
writeObject
/
readObject
와 어떻게 맞물리는지. 단계별 실습, 흐름도와 함께 자주 발생하는 오류를 분석합니다.
직렬화 보안: 모범 사례
JAVA 25 SELF
레벨 43,
레슨 4
Java에서 안전한 직렬화를 위한 실전 가이드: 신뢰할 수 없는 소스의 역직렬화가 왜 위험한지,
ObjectInputFilter
,
transient
키워드, 명시적인
serialVersionUID
,
instanceof
를 통한 타입 검증, 그리고 대체 교환 포맷(JSON/Proto)을 통해 어떻게 방어하는지를 다룹니다. 내부에는 — 직관적인 코드 예제, 허용된 클래스 필터링, 그리고 전형적인 실수에 대한 해설이 포함되어 있습니다.
Please enable JavaScript to continue using this application.