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 が必要だった