Frage

Ich habe eine Frage gestellt in: Reflektieren Sie ein Listenobjekt

Ich habe tatsächlich meine Antwort bekommen, möchte nur verstehen, warum, wann ich dies tun werde, illegalArgumentException: Kann nicht die statische Final ArrayList Serialversionuid auf java.lang.long setzen. Aber wenn ich ein Objekt mache, reflektieren Sie ein anderes Objekt kein Fehler.

List<ClassB> listB = (List<ClassB>) convert(listA, ArrayList.class); 
War es hilfreich?

Lösung

Es gibt ein Problem mit der Konvertierungsmethode, wenn versucht wird, ein endgültiges Feld zuzuweisen. Ich schlage vor, Sie ändern die Konvertierungsmethode wie folgt.

    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));
         }
     }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top