I already have a solution, but I don't like it. Also, it would be nice to know your thoughts about this.
You see, elem.get gives back an Object, that is going to be a Float in the case of x and y.
This code throws the Exception described in the title:
String names[] = { "x", "y", "src" };
Class types[] = { float.class, float.class, String.class };
for (int i = 0; i < names.length; i++)
{
if (elem.containsKey(names[i]))
{
par.add(types[i]);
arg.add(types[i].cast(elem.get(names[i])));
}
}
The code is used to define the list of parameters to instantiate an object. Both the parameters and the object's class name are defined in an external data file (but nevermind about that).
The solution, something I'm not fond of (because it loses the flexibility I was trying to attain), has this within the for:
if(types[i] == float.class)
{
float v = (Float)elem.get(names[i]);
arg.add(v);
} else
{
arg.add(types[i].cast(elem.get(names[i])));
break;
}
Other option would be changing float.class to Float.class in types, but I won't do that because that code is used to instantiate objects which have float parameters in their constructors.
Thanks!