سؤال

لقد طرحت سؤالاً في: تعكس كائن قائمة

لقد حصلت في الواقع على إجابتي فقط أريد أن أفهم لماذا عندما أفعل ذلك ، سأضرب غير شرعي: لا يمكنني تعيين ArrayList Final SerialVersionuid إلى java.lang.long. ولكن عندما أفعل كائن واحد يعكس إلى كائن آخر لا يوجد خطأ.

List<ClassB> listB = (List<ClassB>) convert(listA, ArrayList.class); 
هل كانت مفيدة؟

المحلول

هناك مشكلة في طريقة التحويل عندما تحاول تعيين حقل نهائي. أقترح عليك تعديل طريقة التحويل على النحو التالي.

    for (Field targetField : targetClass.getDeclaredFields()) {
        if (!Modifier.isFinal(targetField.getModifiers())) {
            targetField.setAccessible(true);
            Field field =
                instance.getClass().getDeclaredField(targetField.getName());
            field.setAccessible(true);
            targetField.set(target, field.get(instance));
         }
     }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top