2011-05-10 2 views

답변

3

serialVersionUID를 전혀 넣지 않아도됩니다.

자바는 자동으로 등 필드, 메소드에 따라 클래스에 대한 적절한 일련 ID를 결정합니다

당신이 파일로 객체를 포함 할 것이다로드해야 할 때 serialVersionUIDs이 할 수있는 유일한 적절한 시간이다 나중에 코드를 변경 한 후에도

다른 버전의 라이브러리를 사용하는 구성 요소간에 유선을 통해 데이터를 전송하려는 경우.

사람들이 직렬화를 필요로하는 시간의 90 %는 실시간이며 양쪽에서 일치하는 라이브러리 버전이 보장됩니다. 이러한 경우 serialVersionUID를 설정할 필요가 없으며 호환되지 않는 라이브러리 버전이 있지만 sID를 변경하지 않은 경우 실제로 문제가 발생할 수 있습니다. 자바가 순차적으로 호환 가능하다고 생각하기 때문에 이상한 오류가 발생하기 시작합니다. 실제로는 그렇지 않습니다. 뿐만 아니라 이러한 질문에

봐 :

Is there a reason to use a real serialVersionUID?

Why generate long serialVersionUID instead of a simple 1L?

What is a serialVersionUID and why should I use it?

편집 추가 :

를 원래의 질문에 관해서는, 어떤 당신은 필요 없어 조상들에 대해 걱정할 필요가 있습니다. serialVersionUID는 호환 가능한지 여부를 Java에 알려줍니다.

그러나 조상이 변경되고 serialVersionUID가 변경되지 않은 경우 사용자가 말하는 경우에도 호환되지 않을 수 있습니다. 당신이 그것을 전혀 설정하지 않아야하는 또 다른 이유.

+2

질문의 요점을 놓친 것 같습니다. 그것은 당신이'serialVersionUID'를 사용해야하는지 아닌지에 대해서가 아니고, 만약 당신이 * 그것을 사용했다면, 그것은 서브 클래스뿐만 아니라 슈퍼 클래스에도 있어야합니까? – skaffman

+0

글쎄, 그는 물어 봤어, 그리고 "나는 그냥 Serializable 클래스 자체에?" 그의 전제는 잘못된 정보가 여러 해에 걸쳐 전달 되었기 때문에 잘못되었다. 그래서 나는 그것을 고치고있다. –

+1

예고하지 않은 경우 마지막 링크에서 수락되고 가장 많이 투표 된 답변은 실제로 답변의 반대입니다. 당신은 항상 하나를 선언하는 것이 좋습니다 (Serializable을위한 실제 javadoc). 첫 번째와 두 번째 링크는 서로 다르지만 관련된 문제입니다. – Robin

관련 문제