문제

Mersenne-Twister 구현을 사용하고있었습니다 http://www.math.sci.hiroshima-u.ac.ac.jp/~mat/mt/versions/java/mtrandom.java 기본값에 대한 드롭 인 교체로 java.util.Random 수업. 그러나 4 개의 필드 (int, 부울 및 2 바이트 [])는 다음과 같이 표시됩니다. transient. 이것은 사용자 정의 기능을 구현하지 않고도이 클래스의 객체를 직렬화 할 수 없음을 의미합니다.

문제는이 필드가 일시적으로 표시되는 이유가 있습니까? 파일에서 객체를 읽을 때 아무런 의미가없는 정보를 보유하는 코드가 있습니까? 나는 그것을 제거했다 transient 필드에서 수정 자와 잘 작동하는 것처럼 보이지만 집중적으로 테스트하지 않았으므로 파손되는 경우도있을 수 있습니까?

개인적으로, 나는 수업에서 수행 된 모든 것이 산술이기 때문에 왜 그런지 알 수 없습니다.

도움이 되었습니까?

해결책

아마도 그 이유는 아마도 가능성이 높습니다 모두 클래스의 비 정적 필드 중 transient 그렇습니다 MTRandom 클래스는 이진과 호환됩니다 java.util.Random, 그것은 확장된다.

따라서 이론적으로, 당신은 an을 일련화 할 수 있습니다 MTRandom 인스턴스, 그리고 그것을 a로 삼아야합니다 Random 인스턴스와 모든 것이 작동합니다.

그 분야가 아닌 경우 transient, 그들은 직렬화되어 양립 할 수 없게됩니다.

그러나 내가 알 수있는 한, 과도를 제거하면 문제가 발생하지 않아야합니다.

다른 팁

댓글에서 serialVersionUID, 저자가 직렬화를 고려하고 싶지 않은 것 같습니다. 첨가 transient 일부 컴파일러/IDE 경고를 억제했을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top