クラス名からインスタンスを生成するには、Class.forNameを使用します。
サンプルソース
例)文字列 "java.util.ArrayList" からインスタンスを生成する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public class Sample { public static void main(String[] args) { try { //文字列からクラスを取得する Class<?> cls = Class.forName("java.util.ArrayList"); //クラスをインスタンス化する Object obj = cls.newInstance(); //インスタンスからクラス名を取得する System.out.println(obj.getClass().getCanonicalName()); }catch(ClassNotFoundException ex) { //Class.forNameで発生する可能性 ex.printStackTrace(); }catch(IllegalAccessException ex) { //Class#newInstanceで発生する可能性 ex.printStackTrace(); }catch(InstantiationException ex) { //Class#newInstanceで発生する可能性 ex.printStackTrace(); } } } |
- 結果
- java.util.ArrayList
備考
- Class.forNameは、ClassNotFoundExceptionが発生する可能性があるためtry~catchで処理する必要があります。