Java.lang.ClassCastException: java.util.Arrays$ArrayList ne peut pas être envoyé à java.util.ArrayList
Pouvez-vous m'expliquer pourquoi cela se produit et comment puis-je résoudre ce problème s'il vous plaît?
donc J'utilise Oracle-ADF et j'utilise des composants de navette. J'obtiens les valeurs sélectionnées à l'aide de la sos1.getValue();
la méthode getValue() retourne un objet et j'essaye de le convertir en un ArrayList pour pouvoir travailler avec lui plus tard. Par conséquent, j'ai créé le ArrayList sos1Value
Cependant, cette ligne de code est fou:
sos1Value = (ArrayList) Arrays.asList(sos1.getValue());
Et je continue à avoir un java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
j'ai essayé d'autres moyens comme: sos1Value = (ArrayList) sos1.getValue();
mais j'ai toujours le même problème, que puis-je faire?
3 réponses
Arrays.asList
retourne un List
implémentation, mais ce n'est pas un java.util.ArrayList
. Il arrive d'avoir un nom de classe de ArrayList
, mais c'est une classe imbriquée à l'intérieur de Arrays
- un genre complètement différent de java.util.ArrayList
.
Si vous besoinjava.util.ArrayList
, il vous suffit de créer une copie:
ArrayList<Foo> list = new ArrayList<>(Arrays.asList(sos1.getValue());
ou:
List<Foo> list = new ArrayList<>(Arrays.asList(sos1.getValue());
(si vous n'avez pas besoin de membres exposés juste par ArrayList
).
Arrays.asList(sos1.getValue());
produit une instance d'implémentation D'une liste (java.util.Arrays$ArrayList
) qui n'est pas java.util.Liste de tableaux. Par conséquent, vous ne pouvez pas jeter par java.util.ArrayList
.
si vous changez le type de sos1Value
List
, vous n'aurez pas besoin de cette distribution.
Si vous devez avoir une instance de java.util.ArrayList
, vous pouvez créer vous-même :
sos1Value = new ArrayList (Arrays.asList(sos1.getValue()));
ArrayList
retournée par Arrays.asList()
la méthode n'est pas Arrays classe. Donc, vous ne pouvez pas jeter par java.util.ArrayList
.
essayez de le convertir / l'affecter à un List
.