У меня есть фрагмент кода, который используется для преобразования строковых представлений, предоставленных Class.getCanonicalName()
, в соответствующие экземпляры Class
. Обычно это можно сделать с помощью ClassLoader.loadClass("className")
. Однако он не работает с примитивными типами, выбрасывая ClassNotFoundException
. Единственное решение, с которым я столкнулся, было примерно таким:
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);
}
Это кажется очень неприятным для меня, так есть ли какой-нибудь чистый подход к этому?