如何从 String 转换为基元类型或标准 java 包装器类型
我有一个,我需要实现方法 invoke()java.lang.reflect.InvocationHandler
我从我的阐述中有一个类型的值,我需要将此值转换为该方法期望的适当returnType(它可以是一个基元,如int,布尔值,双精度类或包装类,如布尔值,整数,双精度值,浮点数等)。java.lang.String
例:
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
String computedValue = compute(...);
return convert(method.getReturnType(), computedValue);
}
private Object convert(Class<?> returnType, String stringValue) {
return ...; // what's the simplest way?
}
我并不期望简单地实现复杂对象之间的自动转换,但我期望一种从String转换为标准java类型的简单方法。
我(也)见过很多次这样的东西,但这对我来说似乎并不合适:
public static Object toObject( Class clazz, String value ) {
if( Boolean.class.isAssignableFrom( clazz ) ) return Boolean.parseBoolean( value );
if( Byte.class.isAssignableFrom( clazz ) ) return Byte.parseByte( value );
if( Short.class.isAssignableFrom( clazz ) ) return Short.parseShort( value );
if( Integer.class.isAssignableFrom( clazz ) ) return Integer.parseInteger( value );
if( Long.class.isAssignableFrom( clazz ) ) return Long.parseLong( value );
if( Float.class.isAssignableFrom( clazz ) ) return Float.parseFloat( value );
if( Double.class.isAssignableFrom( clazz ) ) return Double.parseDouble( value );
return value;
}
以上甚至不是我看到的最糟糕的一个,到目前为止:)
有人在这里有秘密把戏吗?