Guava的TypeToken可以获得通用字段的特定类型吗?

时间:2012-11-20 00:45:21

标签: java guava

我为一个名为ASN.1的文件格式编写了一个解析器,它使用Guice的TypeLiteral.getFieldType(Field)将通用字段转换为特定的Java类型,因此我可以构造正确的类型(类似于Jackson或GSON数据绑定)。但由于我已经依赖Guava并且似乎有一个新的TypeLiteral替代品,我想改用TypeToken。根据{{​​3}}:

  

TypeToken类似于Guice的TypeLiteral类,但有一个重要区别:它支持非统一类型,例如TList<T>甚至{{1} };虽然List<? extends Number>没有。 TypeLiteral也是可序列化的,并提供了许多其他实用方法。

您可以使用TypeToken获取字段的具体类型吗?换句话说,我怎样才能在Guava中做到以下几点?

TypeToken

1 个答案:

答案 0 :(得分:7)

从我的头上,未经核实

Type t = B.class.getDeclaredField("b").getGenericType();
Class<?> p = TypeToken.of(t).resolve(
        /* T */  A.getTypeParameters()[0]).getRawType();
// p should be String.class