我为一个名为ASN.1的文件格式编写了一个解析器,它使用Guice的TypeLiteral.getFieldType(Field)
将通用字段转换为特定的Java类型,因此我可以构造正确的类型(类似于Jackson或GSON数据绑定)。但由于我已经依赖Guava并且似乎有一个新的TypeLiteral替代品,我想改用TypeToken
。根据{{3}}:
TypeToken
类似于Guice的TypeLiteral
类,但有一个重要区别:它支持非统一类型,例如T
,List<T>
甚至{{1} };虽然List<? extends Number>
没有。TypeLiteral
也是可序列化的,并提供了许多其他实用方法。
您可以使用TypeToken
获取字段的具体类型吗?换句话说,我怎样才能在Guava中做到以下几点?
TypeToken
答案 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