web-dev-qa-db-fra.com

Comment convertir Java.lang.Object en ArrayList?

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?

9
sjain

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;.)

12
Kilian Foth

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;
}
2
Lucas Pires

Plutôt le jeter à un tableau d'objets.

Object obj2 = from some source . . ;
Object[] objects=(Object[])obj2;
1
vinay

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);
1
Akshayraj Kore

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.

0
khadre