java - 如何将值解析为适当的目标类型
问题描述
我有一个方法,它有两个参数值:Object 和 initialValueType:String。
public Object parseValueForInitialValueType(Object value, String initialValueType) {
Class<?> clazz = Class.forName(initialValueType);
Constructor<?> constructor = clazz.getConstructor(String.class);
return constructor.newInstance(value);
}
此参数可能具有以下值:
value -> "test":String; initialValueType -> "java.lang.String"; method output -> "test":String
value -> 123.0:Double; initialValueType -> "java.lang.Double"; method output -> 123.0:Double
value -> "456.0":String; initialValueType -> "java.lang.Double"; method output -> "426.0:Double
value -> "123.000":String; initialValueType -> "java.math.BigDecimal"; method output -> 123.000:BigDecimal
问题是,我得到异常:
Exception in thread "main" java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
如何将值解析为所需的初始值类型?
基本上,我想为 initialValueType 构造一个新对象。
解决方案
似乎是解决方案:
public Object parseValueForInitialValueType(Object value, String initialValueType) {
Class<?> clazz = Class.forName(initialValueType);
Constructor<?> constructor = clazz.getConstructor(String.class);
return constructor.newInstance(String.valueOf(value));
}
推荐阅读
- c++ - 枚举类的编译时索引器
- android - 无法从 RxJava2 准确迁移到 RxJava3
- android - Android:(Camera2)相机从活动返回后不再存在异常
- python - 如何将行数设置在 QTableView 的右侧?
- terminal - 现在强制 ncurses 更改光标颜色
- javascript - 文本文件到arraylist javascript
- javascript - Asp.Net core MVC Javascript Ajax 参数 null HttpPost
- sql - 在 SQL Server 中将日期时间格式从 YYY-MM-DD HH:MM:SS 更改为 YYYY.MM.DD HH:MM:SS
- javascript - 如何在 Angular 8 中对字符进行切片并在 HTML 文件中显示
- flutter - 如何减少 raisebutton.icon 小部件中图标和文本之间的空间?