سيؤدي إضافة طريقة إلى تغيير SerialVersionUID المحسوب في Java على صفي؟

StackOverflow https://stackoverflow.com/questions/998925

سؤال

إذا كان لدي فئة مثل هذا:

public class Name implements Serializable {
    private final String firstName;
    private final String lastName;

    public Name(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }
}

هل سيتغير Serialialuid المحسوب إذا أضفت طريقة أخرى (ولا توجد حقول إضافية)؟

على سبيل المثال، إضافة الطريقة:

public String getFullName() {
    return firstName + " " + lastName;
}

بدلا من ذلك، هل هناك أداة لطيفة لمعرفة ذلك؟

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

المحلول

نعم، سوف يغير serialVersionUID.

يمكنك استعمال ال serialver أداة سطر الأوامر - على الأقل في Sun's JDK لحساب serialVersionUID للحصول على فئة مترجمة معينة.

نصائح أخرى

نعم، سوف يتغير. طريقة سهلة هي Eclipse: إذا كانت الفئة تنفذ Serializable وأنت لا توفر حقل SerialVersionUID، فإن IDE يعرض رمز تحذير. يمكنك النقر فوق علامة التحذير وحدد "إضافة إصدار تسلسلي ولدت". سيؤدي ذلك إلى حساب SerialVersionUID لك وأدخلها في التعليمات البرمجية الخاصة بك.

عندما بدأت في اختبار فولي، بدا لي أن serialversionuid تم تجديده عندما كان الفصل تجميع وانتاج, ، ليس فقط عندما تغير توقيعها. يمكن أن يكون سبب ذلك هو بناء مافن وحقيقة أنه تم حذف الطبقة القديمة قبل البناء الجديد.

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