본문 바로가기

IT/Development

[JAVA] @SuppressWarnings("serial")

  

1. 개요

- 객체를 파일에 쓰거나 전송하기 위해 객체 클래스에 Serializable 인터페이스를 implements 함.

- 하지만, Serializable 인터페이스를 implements 하게 되면 warnning이 발생한다.

- warnning이 발생하지만 동작하는데는 문제가 없다.

- 불필요한 warnning을 제거하는 방법.

 

2. @SuppressWarings

- 부적절한 compiler의 경고를 제거하기 위해 사용

- compile 시 warnning을 체크하지 않기 위해 사용

 

2. serial

- java.io.Serializable 인터페이스를 implements 할때,

  serialVersionUID를 정의해주지 않은 경우 나타나는 warnning을 체크하지 않음

 

3. serialVersionUID 란?

- 직렬화에 사용되는 고유 ID

- 선언하지 않으면 JVM에서 default로 자동 생성

- 선언하지 않아도 동작하는데 문제는 없지만,

  JAVA에서는 명시적으로 serialVersionUID를 선언할 것을 적극 권장

※ JVM에 의한 default serialVersionUID 계산은 클래스의 세부 사항을 민감하게 반영하기 때문에

    컴파일러 구현체에 따라 달라질 수 있어 deserialization 과정에서 예상하지 못한

    InvalidClassException을 유발할 수 있다.

 

4. 결론

@SuppressWarnnings("serial") 어노테이션 처리를 해줘도 되지만,

SerialVersionUID를 선언해주는 것이 권장되는 방법이다.

 

난... 그냥...

@SuppressWarnning("serial") 어노테이션을 쓴다.