CODEDRAGON ㆍDevelopment/Java
오류메시지
java.io.NotSerializableException: java.lang.Object
java.io.NotSerializableException: java.lang.Object |
|
오류 원인
· 직렬화시 발생하는 오류메시지입니다.
· UserInfo 클래스가 Serializable 인터페이스를 구현하고 있지만 이 클래스의 객체를 직렬화하게 되면 NotSerializableException 예외가 발생하게 됩니다.
· 왜냐하면 Object객체는 직렬화 할 수 없습니다.
· 직렬화할 수 없는 클래스의 객체를 인스터스 변수가 참조하고 있기 때문입니다.
· 모든 클래스의 최상위 클래스인 Object클래스는 Serializable을 구현하고 있지 않기 때문에 직렬화할 수 없습니다.
· 만약 Object클래스가 Serializable을 구현한다면 직렬화할 수 있습니다.
import java.io.Serializable;
public class UserInfo implements Serializable {
String name; String password; int age; //Object객체는 직렬화 할 수 없습니다. Object obj = new Object();
} |
public class UserInfo implements Serializable {
String name; String password; int age; //즉, Upcasting되었지만 본질은 String입니다. 그래서 인스턴스변수의 자료형 타입이 아닌 본질인 실제 객체의 종류에 의해서 직렬화가 결정됩니다. Object obj = new String("codedragon"); } |
String 클래스 정의 형식
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {}
|
'Development > Java' 카테고리의 다른 글
JFC (Java Foundation Class) (0) | 2017.07.13 |
---|---|
Enumeration - Interface Enumeration<E>, Enumeration 인터페이스 메소드 (0) | 2017.07.06 |
조건 연산자(삼항 연산자) - ? : , 조건 연산자의 의미, 삼항 연산자 형식 (0) | 2017.06.20 |
JDBC-ODBC 드라이버 (Type 1) (0) | 2017.06.18 |
테스트 러너(Test Runner), @RunWith (0) | 2017.06.07 |