Я использовал реализацию Mersenne-Twister на http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/JAVA/MTRandom.java в качестве замены в качестве замены для класса java.util.Random
по умолчанию. Однако четыре поля (int, логический и два байта []) помечены как transient
. Это означает, что я не могу сериализовать объект этого класса без реализации пользовательских функций.Почему этот класс не Сериализуем?
Вопрос в том, есть ли причина, по которой эти поля отмечены переходными? Есть ли там какой-нибудь код, который содержит информацию, которая не имеет никакого смысла, когда объект считывается из файла? Я удалил модификатор transient
из полей, и, похоже, он работает нормально, но я не тестировал его интенсивно, и могут ли быть случаи, когда он ломается?
Лично я не понимаю, почему, поскольку все, что сделано в классе, является арифметическим.
Он не остается «бинарным совместимым». Сериализация Java работает так. –