import java.util.HashMap;
import java.util.Map;
public class Main
{
public static void main(String[] args)
{
Map map=new HashMap&l
Use T[] toArray(T[] a) from Collection instead.
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.
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());
}
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 thattoArray(new Object[0])
is identical in function totoArray()
.