我正在寻找一个用于转换支持泛型类型的值的Java库。也就是说,如果我有Foo<T>
,那么该库应支持将String
转换为Foo<String>
或Foo<Int>
。
当然,给定一个类,不能告诉它的通用组件。我的目标是用字符串值填充bean。因此可以检查bean的属性以获取泛型类型信息。
答案 0 :(得分:0)
答案是,没有这样的图书馆。
此外,我认为不可能创建一个。
答案 1 :(得分:0)
以下是解决方案的框架:
public interface Converter {
boolean canConvert(Class<?> sourceCls, Type targetType);
Object convert(Object source, Class<?> sourceClass, Type targetType) throws CannotConvertException;
}
请注意,源类型为Class
,但目标为Type
。如果是Class
,则可以将代码委托给其中一个现有库。如果targetType
是ParameterizedType
,那么您可以从中获取类型参数(类),然后可以使用标准库转换为它们。
使用:
Type targetType = field.getGenericType()
Type targetType = method.getGenericParameterTypes()[0]