比如,我有一个类型字符串java.lang.Integer, 有一个字符串"123"
String className = "java.lang.Integer";
String value="123";
如何让value转换成Integer类型的?

解决方案 »

  1.   

    嗯,反射 ,如何实现呢?我要转换各种类型
    比如有一个Map<String, String>里,记录了。
    key    value
    123     java.lang.Integer
    "asdf"  java.lang.String
    2.3     java.lang.Float怎么写才能让key跟据value里面记录的类型转换成对应的类型?
      

  2.   

    new Integer("123");
    就可以把字符串转换成整型数了
      

  3.   

    你这个基本上就是struts从request中读参数,转换为form中参数的过程(struts1称为populate),这个过程它使用org.apache.commons.beanutils.ConvertUtils做的,如果是自己的类型,还要自己实现org.apache.commons.beanutils.Converter接口。常用的类,在org.apache.commons.beanutils.converters.*
      

  4.   

    如果用反射:
    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);
      

  5.   

    common-beanutils.jar里有个ConvertUtils.convert完全可以实现
    以你的为例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();
    }
    }
      

  6.   

    Integer i =  Integer.parseInt(value)
      

  7.   

    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;
      

  8.   


    改一下
    Field field = o.getClass().getDeclaredField("value"); 
      

  9.   

    Integer.parseInt(value)
    反射对象,一句话就行了
    Integer inte = Class.forName("java.lang.Integer").newInstance();