AnnotatedTypes是否有类似TypeToken的东西

时间:2016-07-28 13:22:20

标签: java reflection annotations java-8

由于Java中没有类型文字,因此通常使用TypeToken技巧。 比如说,您希望得到一个代表Type的{​​{1}}实例,您可以这样做:

List<String>

现在,我想知道是否有类似的技巧可以获得new TypeToken<List<String>>(){}.getType() 的实例。例如,代表AnnotatedType甚至List<@NonNull String>

修改 Here's a full AnnotatedType-enabled TypeToken implementation,由GeAnTyRef提供。

要点:

@NonNull List<@NonNull String>

1 个答案:

答案 0 :(得分:1)

只需创建一个类型标记 - 或带注释类型参数的任何匿名子类 - 使用注释和then use reflection来提取带注释的类型。

请注意,这仅适用于具有运行时保留的注释。

使用链接答案中的fullType()方法:

    List<?> token = new ArrayList<@NonNull String>() {};
    fullType("", token.getClass().getAnnotatedSuperclass());

打印

java.util.ArrayList
<
    @org.checkerframework.checker.nullness.qual.NonNull()
    java.lang.String
>