Collection.toArray() java.lang.ClassCastException

前端 未结 4 842
既然无缘
既然无缘 2021-02-05 08:23
import java.util.HashMap;
import java.util.Map;


public class Main
{
    public static void main(String[] args)
    {
        Map map=new HashMap&l         


        
相关标签:
4条回答
  • 2021-02-05 08:43

    Use T[] toArray(T[] a) from Collection instead.

    0 讨论(0)
  • 2021-02-05 08:51

    toArray() returns an Object[] [and not any object derived from Object[]]. Each element in this array is of type Class, but the array itself is not of type Class[]

    You should cast each element in the array to Class instead of trying to cast the array, or use Collection.toArray(T[]) to avoid casting.

    0 讨论(0)
  • 2021-02-05 08:51

    Use this code for listing out the values of map i.e. class names:

    Object[] array = map.values().toArray();
    for (Object object : array) {
        System.out.println(object.toString());
    }
    
    0 讨论(0)
  • 2021-02-05 09:06

    Change:

    Class[] classes = (Class[]) map.values().toArray();
    

    To:

    Class[] classes = map.values().toArray(new Class[0]);
    

    This gives information on which type of array to convert the Collection to. Otherwise, it returns an array of type Object (and that cannot be cast to an Class[]).


    Quoted from the API documentation for Collection.toArray(T[] a):

    Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array. ...
    Note that toArray(new Object[0]) is identical in function to toArray().

    0 讨论(0)
提交回复
热议问题