Class.getCanonicalName()
によって提供される文字列表現を対応するインスタンスClass
に変換するためのコードがあります。これは通常ClassLoader.loadClass("className")
を使って行うことができます。しかし、ClassNotFoundException
を投げるプリミティブ型では失敗します。私が出会った唯一の解決策は、このようなものだった:私に非常に厄介なようだ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);
}
ので、このための任意のクリーンなアプローチがありますか?
は、Java 7にしている場合は、文字列に 'switch'を試してみてください。 –
おっと、それは知ってうれしいです。しかし、要点は、String.equalsを使って特定の型をチェックしたくないということです。それは厄介な部分です。 – aRestless