Ho una parte di codice utilizzata per trasformare le rappresentazioni di stringa fornite da Class.getCanonicalName()
nelle corrispondenti istanze di Class
. Questo di solito può essere fatto usando ClassLoader.loadClass("className")
. Tuttavia, non riesce su tipi primitivi lanciando uno ClassNotFoundException
. L'unica soluzione mi sono imbattuto è stato qualcosa di simile:Utilizzo di tipi primitivi 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);
}
Che sembra molto brutto per me, quindi non v'è alcun metodo pulito per questo?
Se siete in Java 7, si potrebbe provare un 'switch' sulla corda. –
Ouh, è bello saperlo. Tuttavia, il punto è che non voglio controllare determinati tipi usando String.equals. Questa è la parte cattiva. – aRestless