Reflexion Eine Liste von Objekten, die serialisierbar ist
-
20-09-2019 - |
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);
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