Error - java.io.NotSerializableException: java.lang.Object

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 {}