将具有类型转换的值分配给Java中对象属性的最佳方法是什么。
例如:具有年龄字段为整数的Person类。如果以下语句必须将整数21分配给age字段,那么set方法的实现应该是什么? [注意:21作为字符串传递]
ObjectUtils.set(person, "age", "21");
一种方法是获取字段的类型并明确地输入类型。是否有更好的方法或库实用程序可用于实现此目的?
答案 0 :(得分:3)
设置指定的属性值,根据需要执行类型转换以符合目标属性的类型。
答案 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 - 如果是字符串 不包含可解析的整数。