public final class ClassUtil extends Object
Integer integer = new Integer("12");
Integer integer = null;
Class createClass = null;
Class paramClass = null;
//クラスローダを取得する
Thread t = Thread.currentThread();
ClassLoader cl = t.getContextClassLoader();
try {
//生成するクラスのClassオブジェクトを取得
createClass = cl.loadClass("java.lang.Integer");
//コンストラクタの引数となるクラスのClassオブジェクトを取得
paramClass = cl.loadClass("java.lang.String");
} catch(ClassNotFoundException e) {
//クラスファイルが見つからなかった場合。
}
try {
//Constructorオブジェクトを取得
Constructor constructor =
classObject.getConstructor(new Class[]{paramClassObject});
} catch(NoSuchMethodException e) {
//指定された引数を定義したコンストラクタが無かった場合
} catch(SecurityException e) {
//情報へのアクセスが拒否された場合
}
try {
//インスタンスの生成
integer = constructor.newInstance(new Object{"12"});
} catch (IllegalArgumentException e) {
//不正な引数が渡された場合
} catch (InstantiationException e) {
//抽象クラスだった場合
} catch (IllegalAccessException e) {
//コンストラクタにアクセス出来なかった場合
} catch (InvocationTargetException e) {
//コンストラクタが例外をスローした場合
}
Integer integer = null;
try {
integer = (Integer) ClassUtil.create(
"java.lang.Integer", new Object[] {"12"});
} catch(ClassLoadException e) {
//インスタンス生成時に例外が発生した場合
}
ClassLoadException
public static Object create(String className) throws ClassLoadException
className
- 生成するオブジェクトのクラス名ClassLoadException
- インスタンス生成時に発生した例外をラップした例外public static Object create(String className, Object[] constructorParameter) throws ClassLoadException
className
- 生成するオブジェクトのクラス名constructorParameter
- 生成するオブジェクトのコンストラクタのパラメータClassLoadException
- インスタンス生成時に発生した例外をラップした例外Copyright © 2014 NTT DATA Corporation.