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);
}
それは私には非常に厄介に思えますが、これに対するクリーンなアプローチはありますか?