J'ai un objet ArrayList
valide sous la forme de Java.lang.Object
. Je dois à nouveau convertir la Object
en une ArrayList
. J'ai essayé ceci:
Object obj2 = de quelque source. . ; ArrayList al1 = new ArrayList (); Al1 = (ArrayList) obj2; System.out.println ("List2 Value:" + al1);
Mais il imprime null
. Comment puis-je faire ceci?
Cela ne fait que null
si obj2
était déjà null
avant la distribution, votre problème est donc antérieur à ce que vous pensez. (En outre, vous n'avez pas besoin de construire un nouvel ArrayList pour initialiser al1
si vous allez l'assigner immédiatement. Dites simplement ArrayList al1 = (ArrayList) obj2;
.)
Vous pouvez créer une méthode util qui convertit n’importe quelle collection en liste Java.
public static List<?> convertObjectToList(Object obj) {
List<?> list = new ArrayList<>();
if (obj.getClass().isArray()) {
list = Arrays.asList((Object[])obj);
} else if (obj instanceof Collection) {
list = new ArrayList<>((Collection<?>)obj);
}
return list;
}
vous pouvez également mélanger avec cette validation ci-dessous:
public static boolean isCollection(Object obj) {
return obj.getClass().isArray() || obj instanceof Collection;
}
Plutôt le jeter à un tableau d'objets.
Object obj2 = from some source . . ;
Object[] objects=(Object[])obj2;
Convertir directement de Java.lang.Object
en ArrayList<T>
qui contient des éléments de T n’est pas recommandé car cela peut entraîner des exceptions de conversion. La méthode recommandée consiste tout d'abord à convertir en un tableau primitif T
, puis à utiliser Arrays.asList(T[])
L'une des manières d'obtenir une entité à partir d'un javax.ws.rs.core.Response
Java est la suivante:
T[] t_array = response.readEntity(object);
ArrayList<T> t_arraylist = Arrays.AsList(t_array);
La conversion échoue ( Java.lang.ClassCastException: Java.lang.String ne peut pas être converti en Java.util.ArrayList ) car vous avez sûrement des objets qui ne sont pas - ArrayList . vérifiez les types de vos différents objets.