如何在运行时将字符串转换为整数

时间:2010-12-27 10:03:37

标签: java reflection casting

我在java中使用反射。

我开始知道我在运行时传递的方法参数的类型。所以我将文件中的参数值提取到字符串变量中。

现在,如果我知道参数类型为整数,并且如果我传递包含字符串值的对象,我将获得

参数类型不匹配 java.lang.IllegalArgumentException:参数类型不匹配

Class classDefinition = Class.forName("webservices."+objectName);

String methodName = set"+fieldNameAttay[i].substring(0,1)).toUpperCase()+fieldNameAttay[i].substring(1); Field f = classDefinition.getDeclaredField(fieldNameAttay[i]);

       try 
    {        
        //argType = f.getType();
              Method meth = classDefinition.getMethod(methodName,f.getType()); 

              Object arg = new Object[]{fieldValueArray[i]}; //fieldValueArray[i] is always string array 
                   meth.invoke(object, arg);   //If f.getType is Integer this //throws ex
                                   }
          catch (Exception e) 
          {
             System.err.println(e.getMessage());
             e.printStackTrace();
          }

5 个答案:

答案 0 :(得分:5)

你不能字符串转换为整数 - 你可以解析它。例如:

if (parameterType == int.class && argumentType == String.class)
{
    int integerArgument = Integer.parseInt((String) argumentValue);
    // Now call the method appropriately
}

当然,您还需要考虑Integer以及int

答案 1 :(得分:1)

怎么样

Integer.parseInt((String) stringObj)

请注意,仅当两个对象属于同一层次结构时才会进行强制转换。所以这不是铸造。

答案 2 :(得分:1)

如果你使用的唯一类型是String和Integer,那么检查类型然后使用Integer.parseInt可能是最简单的事情。

但是如果你有更多不同的类型,我建议你查看旧的JavaBeans框架:http://download.oracle.com/javase/tutorial/javabeans/index.html

特别是PropertyEditors http://download.oracle.com/javase/7/docs/api/java/beans/PropertyEditor.html http://download.oracle.com/javase/7/docs/api/java/beans/PropertyEditorManager.html

PropertyEditors允许您将值设置为文本,然后将值检索为正确的类型。假设您已经实现并注册了属性编辑器,那么获取正确类型的步骤就是这样的:

  1. 找出参数的类型
  2. 检索该类型的PropertyEditor
  3. 在属性编辑器中使用setAsText和getValue将值转换为正确的类型
  4. ...或者您可以通过使用类似但更简单的接口实现自己的转换框架,使相同的机制适应您的简单需求。

答案 3 :(得分:0)

System.out.println(Integer.parseInt(obj.toString()))

答案 4 :(得分:0)

还有另一种方法:

整数= Integer.valueOf(“1”);