ClassCastException when casting object Array to Long array
java
Solution
change
returnValues = (Long[]) hotelRooms.keySet().toArray();
to
returnValues = hotelRooms.keySet().toArray(new Long[hotelRooms.size()]);
and let me know if it works :-)
Problem
I get this exception when i try to cast an Object array to a Long array. Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Long; My keys in my hotelRooms map are Long, why it is not possible to cast. Does someone know how to solve this. ``` public class ObjectArrayToLongArrayTest { private Map<Long, String[]> hotelRooms; public static void main(String[] args) { ObjectArrayToLongArrayTest objectArrayToLongArrayTest = new ObjectArrayToLongArrayTest(); objectArrayToLongArrayTest.start(); objectArrayToLongArrayTest.findByCriteria(null); } private void start() { hotelRooms = new HashMap<Long, String[]>(); // TODO insert here some test data. hotelRooms.put(new Long(1), new String[] { "best resort", "rotterdam", "2", "y", "129", "12-12-2008", "11111111" }); hotelRooms.put(new Long(2), new String[] { "hilton", "amsterdam", "4", "n", "350", "12-12-2009", "2222222" }); hotelRooms.put(new Long(3), new String[] { "golden tulip", "amsterdam", "2", "n", "120", "12-09-2009", null }); } public long[] findByCriteria(String[] criteria) { Long[] returnValues; System.out.println("key of the hotelRoom Map" + hotelRooms.keySet()); if (criteria == null) { returnValues = (Long[]) hotelRooms.keySet().toArray(); } return null; } } ```