Ste*_*han 6 java string reflection parsing object
我想构建一个方法,可以Field通过Java Reflection 将String值转换为给定的对象数据类型.
这是我的代码:
String value = ...;
Class<? extends MyObject> clazz = getClazz();
Field f = clazz.getDeclaredField("fieldName");
boolean fieldIsAccessible = f.isAccessible();
if (!fieldIsAccessible) {
f.setAccessible(true);
}
f.getType().cast(value);
if (!fieldIsAccessible) {
f.setAccessible(false);
}
Run Code Online (Sandbox Code Playgroud)
当我在第一次尝试时运行此代码时,我收到此异常java.lang.ClassCastException.
我想转换value成课程java.math.BigDecimal.
我的代码丢失了什么?
tib*_*tof 10
你可以使这个工作适用于具有如下字符串构造函数的类:
f.getType().getConstructor( String.class ).newInstance( value );
这是我想出的解决方案:
public static Object parse(String value, Class<?> clazz) throws NotSupportedException {
String canonClassName = clazz.getCanonicalName();
if (canonClassName.equalsIgnoreCase("java.math.BigDecimal")) {
return new BigDecimal(value);
}
// Add other supported classes here ...
throw new NotSupportedException("The class [" + canonClassName + "] is not supported.");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7937 次 |
| 最近记录: |