可以处理泛型类型的java转换库?

时间:2012-02-16 05:18:50

标签: java generics reflection

我正在寻找一个用于转换支持泛型类型的值的Java库。也就是说,如果我有Foo<T>,那么该库应支持将String转换为Foo<String>Foo<Int>

当然,给定一个类,不能告诉它的通用组件。我的目标是用字符串值填充bean。因此可以检查bean的属性以获取泛型类型信息。

2 个答案:

答案 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,则可以将代码委托给其中一个现有库。如果targetTypeParameterizedType,那么您可以从中获取类型参数(类),然后可以使用标准库转换为它们。

使用:

  • 代表字段:Type targetType = field.getGenericType()
  • for setter methods:Type targetType = method.getGenericParameterTypes()[0]