「Java」Class.forName()関数でインスタンスを生成する
説明
1.public static Class<?> forName(String className)throws ClassNotFoundException
指定された文字列名を持つクラスまたはインタフェースに関連付けられた、Classオブジェクトを返します。
2.public T newInstance() throws InstantiationException,IllegalAccessException
このClassオブジェクトが表すクラスの新しいインスタンスを作成します。
Javaコード
package com.arkgame.study;
public class ClassForNameDemo {
public static void main(String[] args) {
try {
// Classオブジェクト
Class<?> cft = Class.forName("java.util.HashMap");
// 新しいインスタンス
Object obj = cft.newInstance();
System.out.println("単純名(simpleName): " + obj.getClass().getSimpleName());
System.out.println("クラスの正規名(canonicalName): " + obj.getClass().getCanonicalName());
System.out.println("クラスの名前(Name): " + obj.getClass().getName());
} catch (ClassNotFoundException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (InstantiationException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
package com.arkgame.study;
public class ClassForNameDemo {
public static void main(String[] args) {
try {
// Classオブジェクト
Class<?> cft = Class.forName("java.util.HashMap");
// 新しいインスタンス
Object obj = cft.newInstance();
System.out.println("単純名(simpleName): " + obj.getClass().getSimpleName());
System.out.println("クラスの正規名(canonicalName): " + obj.getClass().getCanonicalName());
System.out.println("クラスの名前(Name): " + obj.getClass().getName());
} catch (ClassNotFoundException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (InstantiationException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
package com.arkgame.study; public class ClassForNameDemo { public static void main(String[] args) { try { // Classオブジェクト Class<?> cft = Class.forName("java.util.HashMap"); // 新しいインスタンス Object obj = cft.newInstance(); System.out.println("単純名(simpleName): " + obj.getClass().getSimpleName()); System.out.println("クラスの正規名(canonicalName): " + obj.getClass().getCanonicalName()); System.out.println("クラスの名前(Name): " + obj.getClass().getName()); } catch (ClassNotFoundException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (InstantiationException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (IllegalAccessException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } }
実行結果
単純名(simpleName): HashMap
クラスの正規名(canonicalName): java.util.HashMap
クラスの名前(Name): java.util.HashMap