2009-10-08 8 views
19

스윙 JComponent 클래스가 인터페이스 Serializable을 구현하는 이유는 무엇입니까? 내 견해를 구현 한 방식으로 상태가 없으며 모든 주 데이터가 프리젠 테이션 모델에 저장됩니다. 그래서 나는 내 견해를 연재 할 필요가 없다. 경고를 삭제하기 위해 @SuppressWarnings("serial") 주석을 사용했습니다. 그들을 제거하는 더 좋은 방법이 있습니까?스윙 구성 요소 및 직렬화

+4

* Way * Java API의 너무 많은 부분이 Serializable을 구현합니다. 개인적으로 직렬화를 사용하는 코드를 실제로 작성하지 않았다면 빌드/IDE에서 직렬화 경고를 해제하는 것이 좋습니다. –

답변

15

처음에는 GUI 빌더가 UI를 직렬화 된 형식으로 저장하려고했습니다. applet 태그에는 직렬화 된 양식에서로드 할 속성이 있습니다 (나는 그것을 사용하는 다른 사람을 알지 못하고 악의적 인 것으로 만 사용했습니다). 불행히도 GUI의 직렬화 메커니즘을 사용하면 실제로 작동하지 않습니다. 스윙은 동일한 주요 릴리스 내에서만 호환성을 보장합니다. (그리고 나는 그 테스트가 거의 없다고 생각합니다).

3

왜 Swing JComponent 클래스가 Serializable 인터페이스를 구현합니까?

클래스를 직렬화하고 클라이언트와 서버간에주고받을 수 있지만 직관적 인 시나리오는 아닙니다. 여전히 슬림한데 누군가가 파일에 컴포넌트를 직렬화하기를 원할 수있는 더 좋은 기회가 있습니다. 이것은 일련의 직렬화를 허용합니다.

[경고]를 제거하는 더 좋은 방법이 있습니까?

serialVersionUID를 인스턴스화 할 수 있지만 변경할 경우 클래스를 변경할 때 유지해야합니다. 이것은 잔인한 것 같습니다. Laurence Gonsalves가 그의 코멘트에서 지적한 또 다른 옵션은 환경 설정 -> Java -> 컴파일러 -> 오류/경고 -> 잠재적 인 프로그래밍 문제 필드에서 경고를 모두 표시하지 않는 것입니다.

관련 문제