Tengo un fragmento de código que se usa para convertir las representaciones de cadena entregadas por Class.getCanonicalName()
en sus instancias correspondientes de Class
. Esto generalmente se puede hacer usando ClassLoader.loadClass("className")
. Sin embargo, falla en tipos primitivos lanzando un ClassNotFoundException
. La única solución que encontré fue algo como esto:Uso de tipos primitivos con ClassLoader
private Class<?> stringToClass(String className) throws ClassNotFoundException {
if("int".equals(className)) {
return int.class;
} else if("short".equals(className)) {
return short.class;
} else if("long".equals(className)) {
return long.class;
} else if("float".equals(className)) {
return float.class;
} else if("double".equals(className)) {
return double.class;
} else if("boolean".equals(className)) {
return boolean.class;
}
return ClassLoader.getSystemClassLoader().loadClass(className);
}
Eso parece muy desagradable para mí, por lo que no es cualquier enfoque limpio para esto?
Si estás en Java 7, se podría tratar de un 'switch' en la cadena. –
Ouh, eso es bueno saberlo. Sin embargo, el punto es que no quiero verificar ciertos tipos usando String.equals. Esa es la parte desagradable. – aRestless