سؤال

كنت أستخدم تنفيذ Mersenne-الإعصار في http://www.math.sci.hiroshima-u.ac.jp/~m-mat/mt/versions/java/mtrandom.java. كاستبدال انخفاض في الافتراضي java.util.Random صف دراسي. ومع ذلك، فإن أربعة حقول (INT، المنطقي واثنين من البايت []) transient. وبعد هذا يعني أنه لا يمكنني استقلار كائن من هذه الفئة دون تنفيذ وظائف مخصصة.

السؤال هو، هل هناك أي سبب تم وضع علامة على هذه الحقول عابرة؟ هل هناك أي كود موجود في هناك معلومات لن تحدث أي معنى عند قراءة الكائن من ملف؟ أزلت transient معدل من الحقول ويبدو أنه يعمل بشكل جيد، لكنني لم أختبرها بشكل مكثف، وبالتالي قد تكون هناك حالات تنطوي عليها؟

شخصيا، لا أستطيع أن أرى لماذا، لأن كل ما يتم ذلك في الفصل هو حسابي.

هل كانت مفيدة؟

المحلول

على الأرجح المنطق وراء صنع الكل الحقول غير الثابتة للفئة transient كان بحيث MTRandom فئة يبقى متوافقا ثنائيا java.util.Random, ، والتي تمدد منها.

من الناحية النظرية، يمكنك تسلسل MTRandom مثيل، وتغمرها ك Random المثال وكل شيء سيعمل.

إذا كانت هذه الحقول ليست كذلك transient, ، ثم سيتم تسلسلون ويصبحون غير متوافقين.

ومع ذلك، بقدر ما أستطيع أن أقول، لا ينبغي أن يسبب إزالة العابرين مشكلة بالنسبة لك.

نصائح أخرى

من التعليق على serialVersionUID, يبدو أن المؤلف لا يرغب في النظر في التسلسل. إضافة transient ربما قمعت بعض تحذيرات مترجم / IDE.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top