2011-10-19 4 views
21

이 클래스는 직렬화되도록 설정되어 있지 않지만이 예외적 인 경고가 표시됩니다. 그런 이상한 경고를 만난 사람이 나에게 알려주겠습니까?!경고 : [serial] serializable 클래스 SomeClass에는 serialVersionUID 정의가 없습니다

C:\Documents and Settings\...filename.java:60: warning: [serial] serializable class SomeClass has no definition of serialVersionUID 
public class NewPortalConnection extends javax.swing.JFrame { 

감사

답변

36

당신이 직렬화 구현하는 클래스에서 파생 할 때이 경고가 제공됩니다. 귀하의 경우, Serializable 부모 클래스는 JFrame입니다.

@SuppressWarnings ("serial")과 함께 경고를 표시하지 않거나 클래스에 serialVersionUID : private static final long serialVersionUID = ...; (점이 긴 값)을 지정할 수 있습니다.

여기에 discussion이 있습니다.

+0

그래서이 경고를 없애려면 어떻게해야한다고 생각합니까 ?? – Sam

+0

답변에 옵션을 추가했습니다. –

+0

고맙습니다 S.L. 정확한 답변을 얻으려는 바스 (Barth)! 너는 나에게 많은 허물을 구했다! 모두 제일 좋다! – Sam

6

JFrame은 Serializable을 구현하므로 모든 확장 클래스도 Serializable을 구현합니다.

여기 튜토리얼 about Serializable and serialVersionUID하지만 정말 주제를 이해하기 당신이 당신의 응용 프로그램이 여기에, 일을 직렬화없는 완전히 경고 억제하는 방법 결코 알고 있다면 당신은 Effective Java (2nd Ed) by Joshua Bloch

+0

나는 제안 된 논문을 확실히 읽을 것입니다! 고마워 션! – Sam

4

의 제 11 장을 읽어야합니다.

javac의 명령 줄 인수에 -Xlint:-serial을 추가하십시오. 예를 들어,

javac -Xlint -Xlint:-serial *****

이 방법 당신은 "직렬"을 제외한 모든 경고를해야합니다.

관련 문제