1

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

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

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

一种方法是获取字段的类型并显式地进行类型转换。有没有更好的方法或库实用程序可以实现这一目标?

4

3 回答 3

3

看看BeanUtils.setProperty()

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

于 2013-05-23T07:04:51.327 回答
1

您可以通过使用反射来实现这一点:

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

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);

拥有属性类型后,很容易转换值。

于 2013-05-23T07:00:21.170 回答
0

在您的 set 方法中使用 Integer.parseInt(String) 。确保捕获无效号码的异常。这是 parseInt 的 hte javadoc

解析整数

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

于 2013-05-23T06:59:41.157 回答