Open HanaHww2 opened 1 year ago
인스턴스 필드중 불변식은 기본값(정수형은 0, boolean은 false, 객체 참조타입은 null)으로 초기화된다면 위배됨. 이경우엔 클래스에 readObjectNoData메서드를 추가해라.
private void readObjectNoData() throws InvalidObjectException { throw new InvalidObjectException("스트림 데이터가 필요합니다."); }
readObjectNoData
public class Person implements Serializable { private final String name; private final int age;
public Person(String name, int age) { this.name = name; this.age = age; }
// ... 기타 메서드 }
- 이 클래스가 직렬화되어 들어온다면 에러가 나므로 아래와 같은 로직 구현이 필요 ```java private void readObjectNoData() throws ObjectStreamException { this.name = "Unknown"; this.age = 0; }
Serializable 단점들
Best practice?
주의점
예외
이처럼 상속용 클래스에서 Serializable를 꼭 구현해야한다면?
인스턴스 필드중 불변식은 기본값(정수형은 0, boolean은 false, 객체 참조타입은 null)으로 초기화된다면 위배됨. 이경우엔 클래스에 readObjectNoData메서드를 추가해라.
readObjectNoData
가 적절한 값으로 클래스필드를 초기화해줌.public Person(String name, int age) { this.name = name; this.age = age; }
// ... 기타 메서드 }