Java FAQ:文字列を指定されたクラスの値(valueOf)に変換

Java FAQ:S007 Q-07

まんま

public class C2008032201 {
    public static void main(String[] args) {
        String classname = "java.lang.Integer";
        String value = "1";

        Number n;
        if (classname.equals("java.lang.Integer")) {
            n = Integer.valueOf(value);
        } else if (classname.equals("java.lang.Double")) {
            n = Double.valueOf(value);
        } else {
            n = new Integer(0); // dummy
        }

        System.out.println(n);
    }
}

で、

1

「n = new Integer(0); // dummy」を入れないと、コンパイルエラーになってしまう。


まんま

import java.lang.reflect.Method;

public class C2008032202 {
    public static void main(String[] args) {
        String classname = "java.lang.Integer";
        String value = "1";

        Number n;
        try {
            Class clazz = Class.forName(classname);
            Method method = 
                clazz.getMethod("valueOf", new Class[] {String.class});
            n = (Number)method.invoke(null, new Object[] {value});

            System.out.println(n);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

で、

1
  • 「import java.lang.reflect.Method;」の追加が必要だった
  • try 〜 catch が必要だった