9
votes

Java Convertissez une matrice primitive inconnue en une matrice d'objet

J'ai essayé de créer ma propre bibliothèque pour sérialiser et désémarifier les types primitifs d'une classe à XML et de XML à une instance de classe à l'aide de la réflexion pour examiner les modes de nommage de la méthode et les types de retour de méthode.

Jusqu'à présent i ont été capables de le faire avec tous les types primitifs de base, mais je suis resté coincé sur sérialiser un éventail des mêmes primitives. P>

Par exemple, j'invoque la méthode de la classe pour obtenir le tableau des primitives: P>

T t = (T)method.invoke(clazz, (Object[])null);
T[] t = (T[])method.invoke(clazz, (Object[])null);


0 commentaires

3 Réponses :


12
votes

0
votes

fait java.lang.reflect.array.get () faire ce que vous voulez?


2 commentaires

Vous avez également besoin de la getLength ()


Ce serait ma prochaine étape. Cela me permettrait d'obtenir un article de la matrice, mais j'ai toujours besoin de savoir comment le stocker dans un tableau approprié d'abord.



0
votes
Object result = method.invoke(clazz, (Object[])null);
Class<?> arrayKlazz = result.getClass();
if (arrayKlazz.isArray()) {
    Class<?> klazz = result.getComponentType();
    if (klazz == int.class) {
        int[] intArray = arrayKlazz.cast(result);
    }
}
It seems more appropiate to hold (primitive) arrays in an Object (result above).

2 commentaires

Comment cela aidera-t-il à obtenir un objet [] à partir du résultat?


objet [] est déjà répondu. Mais résoudre le problème de la sérialisation avec objet [] pour un int [] , double [] etcetera semble un peu aller trop loin. Un tableau général doit être détenu dans un objet . Je veux suggérer que sans trop grande importance. Si un objet [] est souhaité - bien.