检查一个java.lang.reflect.Type的对象是否可以转换为另一个的组件?

时间:2012-05-03 13:06:15

标签: java generics

Java公开了泛型类型信息,例如对于运行时通过接口java.lang.reflect.Type及其子接口(ParameterizedType,WildcardType)的字段类型。

是否有人知道我在哪里可以找到一个组件,可以确定一个Type的对象是否可以转换为另一个Type,例如如果Set<Object>可以投放到Set,或者Comparator<User>可以投放到Comparator<? extends Object>吗?

该解决方案应该适用于java.lang.reflect.Type所代表的类型信息,而不仅仅是Class es,它应该考虑泛型,即List<Integer>不应该转换为{List<Object> 1}}。

此致 约亨

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

Guava's TypeToken专门针对此问题而设计。它意味着替代Class,这是通用的。 (披露:我向Guava捐款。)

答案 2 :(得分:0)

if (clazz.isAssignableFrom(otherClazz))
{
    return true; 
}