Domanda

Ho posto una domanda in: riflettere un elenco di oggetti

In realtà ho avuto la mia risposta voglio solo capire perché quando farlo lo farò colpisce IllegalArgumentException: Impossibile impostare statica finale ArrayList serialVersionUID a java.lang.Long. Ma quando faccio un oggetto riflettere a un altro oggetto nessun errore.

List<ClassB> listB = (List<ClassB>) convert(listA, ArrayList.class); 
È stato utile?

Soluzione

C'è un problema con il metodo Convert quando tenta di assegnare un campo finale. Vi suggerisco di modificare il metodo convertito come segue.

    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));
         }
     }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top