[英]How can I parse a value into the appropriate target type
I have a method which has a two parameters value:Object and initialValueType:String. 我有一个方法,它有两个参数值: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);
}
This parameters may have following values: 此参数可能具有以下值:
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
Issue is that, I get exception: 问题是,我得到了例外:
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)
How can I parse value into desired initialValueType? 如何将值解析为所需的initialValueType?
Basically, I want to construct a new object for initialValueType. 基本上,我想为initialValueType构造一个新对象。
Seems like solution: 似乎解决方案:
public Object parseValueForInitialValueType(Object value, String initialValueType) {
Class<?> clazz = Class.forName(initialValueType);
Constructor<?> constructor = clazz.getConstructor(String.class);
return constructor.newInstance(String.valueOf(value));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.