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