如果用反射: public class Test { public static void main(String[] args){ String className = "java.lang.Integer"; String value = "123"; try { Class c = Class.forName(className); Method m = c.getMethod("parseInt", value.getClass()); Integer i = (Integer)m.invoke(className.getClass() , value); System.out.println(i); } catch (Exception e) { e.printStackTrace(); } } 不用反射:Integer i = Integer.parseInt(value);
Class clazz = Class.forName("java.lang.Integer"); Object o = clazz.newIntance(); Field field = o.getField("value"); field.setAccessable(true); field.set(o, 123);Integer intValue = (Integer)o;
改一下 Field field = o.getClass().getDeclaredField("value");
Integer.parseInt(value) 反射对象,一句话就行了 Integer inte = Class.forName("java.lang.Integer").newInstance();
比如有一个Map<String, String>里,记录了。
key value
123 java.lang.Integer
"asdf" java.lang.String
2.3 java.lang.Float怎么写才能让key跟据value里面记录的类型转换成对应的类型?
就可以把字符串转换成整型数了
public class Test {
public static void main(String[] args){
String className = "java.lang.Integer";
String value = "123";
try {
Class c = Class.forName(className);
Method m = c.getMethod("parseInt", value.getClass());
Integer i = (Integer)m.invoke(className.getClass() , value);
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}
}
不用反射:Integer i = Integer.parseInt(value);
以你的为例for (String str : map.keySet()) {
String type = map.get(str);
try {
Class clazz = Class.forName(type);
Object returnObj = ConvertUtils.convert(str, clazz);
System.out.println(returnObj); } catch (Exception e) {
e.printStackTrace();
}
}
Object o = clazz.newIntance();
Field field = o.getField("value");
field.setAccessable(true);
field.set(o, 123);Integer intValue = (Integer)o;
改一下
Field field = o.getClass().getDeclaredField("value");
反射对象,一句话就行了
Integer inte = Class.forName("java.lang.Integer").newInstance();