직렬화가 가능한 클래스 만들기 - Serializable, transient (1)

2022. 4. 29. 11:22·자바/입출력 IO

1. 직렬화가 가능한 클래스를 만드는 방법

- 직렬화하고자 하는 클래스가 java.io.Serializable 인터페이스를 구현하도록 하면 된다. 

 

- 그저 아래 코드처럼 따로 구현할 필요없이 implements만 해주면 된다.

public class UserInfo implements java.io.Serializable{
}

 

 

- 또한 아래의 코드처럼 조상이 implements를 통해 직렬화하였다면, 자손도 직렬화가 가능하다.

public class SuperInfo implements java.io.Serializable{
}

public class UserInfo extends SuperInfo{
}

 

 

- 그러나, 아래의 코드처럼 조상님의 인스턴스 변수(name, password)는 직렬화 대상에서 제외된다.

public class SuperInfo{
	String name;
    	String password;
}

public class UserInfo extends SuperInfo implements java.io.Serializable{
	int age;
}

 

( 만약 name과 password를 직렬화 가능하게 하고 싶다면, 조상에서 implemenst를 하던가 자손에서 직렬화

되도록 하는 코드를 추가해야 한다. )

 

( 자세한 내용은 예제를 통해 알아보자. )

 

 

 

- 아래의 코드는 오류가 발생했다.

Public class UserInfo implements Serializable{
	String name;
	String password;
	int age;
    
    	Object obj = new Object();
   	 // 오류 발생
}

 

(그 이유는 obj 인스턴스 변수 때문인데, 모든 클래스의 최고 조상인 Object는 직렬화를 구현하지 않았기 때문이다. )

 

( 그러나 아래의 코드는 가능하다. )

Public class UserInfo implements Serializable{
	String name;
	String password;
	int age;
    
    	Object obj = new String("abc");
        //String은 직렬화 가능
}

( 직렬화는 실제 타입이 아닌 연결된 객체의 종류에 의해서 결정된다. )

 

 

- 만약 직렬화가 안되는 변수는 제어자 위치에 transient를 붙여서 제외할 수 있다.

 

( 또한 보안상 직렬화를 하면 안되는 변수에도 붙일 수 있다. )

( 그러므로, 다르게 표현하면 직렬화가 가능한 변수이다. )

 

 

 

다음장

직렬화가 가능한 클래스 만들기 - Serializable, transient (2) (tistory.com)

 

직렬화가 가능한 클래스 만들기 - Serializable, transient (2)

 

kind-coding.tistory.com

 

저작자표시 (새창열림)

'자바 > 입출력 IO' 카테고리의 다른 글

직렬화가 가능한 클래스 만들기 - Serializable, transient (2)  (0) 2022.04.29
직렬화(Serializtion): Object 입출력 스트림  (0) 2022.04.29
표준 입출력과 File: File(4)  (0) 2022.04.28
표준 입출력과 File: File(3)  (0) 2022.04.28
표준 입출력과 File: File(2)  (0) 2022.04.28
'자바/입출력 IO' 카테고리의 다른 글
  • 직렬화가 가능한 클래스 만들기 - Serializable, transient (2)
  • 직렬화(Serializtion): Object 입출력 스트림
  • 표준 입출력과 File: File(4)
  • 표준 입출력과 File: File(3)
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      유용한 클래스
      제자리 정렬
      알고스팟
      snail
      ServerSocket
      중간연산
      map()
      InputStream
      안드로이드 스튜디오
      outputstream
      java.time 패키지
      자바 개념
      불안정 정렬
      코딩트리조별과제
      TCP 소켓 프로그래밍
      Collections Framework
      선택 정렬
      스트림
      문자 기반 스트림
      코드트리
      역직렬화
      안정 정렬
      serializable
      소켓 프로그래밍
      코딩테스트
      람다식
      다형성
      java.lang패키지
      file
      Arrays
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    직렬화가 가능한 클래스 만들기 - Serializable, transient (1)
    상단으로

    티스토리툴바