在Java中使用类型转换分配属性值

时间:2013-05-23 06:56:17

标签: java object reflection type-conversion

将具有类型转换的值分配给Java中对象属性的最佳方法是什么。

例如:具有年龄字段为整数的Person类。如果以下语句必须将整数21分配给age字段,那么set方法的实现应该是什么? [注意:21作为字符串传递]

ObjectUtils.set(person, "age", "21");

一种方法是获取字段的类型并明确地输入类型。是否有更好的方法或库实用程序可用于实现此目的?

3 个答案:

答案 0 :(得分:3)

看看BeanUtils.setProperty()

  

设置指定的属性值,根据需要执行类型转换以符合目标属性的类型。

答案 1 :(得分:1)

您可以使用reflexion

来实现这一目标

使用this,您可以动态获取属性类型,如下所示:

Person p = ...; // The object you want to inspect
Class<?> c = p.getClass();

Field f = c.getDeclaredField("age");
f.setAccessible(true);

String typeOfAge = (String) f.getType(p);

拥有属性类型后,可以轻松转换值。

答案 2 :(得分:0)

在set方法中使用Integer.parseInt(String)。确保捕获无效数字的例外。这是hrse javadoc for parseInt

  

<强> parseInt函数

     

public static int parseInt(String s)throws NumberFormatException 解析字符串   参数为带符号的十进制整数。字符串中的字符   必须都是十进制数字,除了第一个字符可能是   ASCII减号' - '('\ u002D')表示负值。该   返回结果整数值,就像参数和   基数10作为parseInt的参数给出(java.lang.String,   int)方法。参数:s - 包含int的String   要解析的表示形式返回:由...表示的整数值   十进制的参数。抛出:NumberFormatException - 如果是字符串   不包含可解析的整数。