考虑以下代码:
public class SimpleTest {
private Map<@JSON Integer,Map<@Frozen Integer,@Enumerated(value = Enumerated.Encoding.NAME, test = "123") String>> map;
}
Run Code Online (Sandbox Code Playgroud)
使用最新的 JDK8 API 用于注释处理,如何从 VariableElement访问注释列表(@JSON、@Frozen和@Enumerated)及其相应的属性(@Enumerated的值和测试)?
final VariableElement mapElm = els.stream().filter(x -> x.getSimpleName().contentEquals("map")).findFirst().get();
???
???
Run Code Online (Sandbox Code Playgroud)
我尝试了很多技巧,例如mapElm.getTypeArguments().get(0)但@Json Integer我从未成功获得注释@JSON ...
编辑:通过访问 JDK 的内部类,我可以访问这些注释,但它对 impl 更改非常hacky 和敏感,我想知道是否有更好的方法
public static class SimpleEntityCodecFactoryTest {
private Map<@JSON Integer,Map<@Frozen Integer,@Enumerated(value = Enumerated.Encoding.NAME, test = "123") String>> map;
}
final TypeElement typeElement = elementUtils.getTypeElement(SimpleEntityCodecFactoryTest.class.getCanonicalName());
final List<VariableElement> els = ElementFilter.fieldsIn(typeElement.getEnclosedElements()); …Run Code Online (Sandbox Code Playgroud)