gpt4 book ai didi

java - 注释处理器: how to verity method return type is Map

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:55 24 4
gpt4 key购买 nike

如何验证方法的返回类型是带有类型参数 Foo 和 Bar 的 Map?

public Map<Foo, Bar> getValue();

public void verify(ExecutableElement method) {
TypeMirror returnType = method.getReturnType();
// how to verify return type is Map<Foo,Bar>

}

Foo 和 Bar 可以是原始类型、用户定义类型或 java 类型(在 java.* 和 javax.* 包中)。这个问题实际上是:如何检查TypeMirror是Map<Foo,Bar> .

最佳答案

不确定是否有更简单的方法,但以下方法有效。

public void verify(ExecutableElement method) {

DeclaredType declaredMethod = (DeclaredType) method;
Elements elementUtils = processingEnv.getElementUtils();

TypeMirror mapType = elementUtils.getTypeElement("java.util.Map").asType();
TypeMirror typeArg1 = elementUtils.getTypeElement("path.to.Foo").asType();
TypeMirror typeArg2 = elementUtils.getTypeElement("path.to.Bar").asType();

boolean equalMainType = declaredMethod.asElement().asType().equals(mapType);
Iterator<? extends TypeMirror> iterator = declaredMethod.getTypeArguments().iterator();
boolean typeArgRes1 = iterator.next().equals(typeArg1);
boolean typeArgRes2 = iterator.next().equals(typeArg2);

if (equalMainType && typeArgRes1 && typeArgRes2) {
// Type matches
}
}

关于java - 注释处理器: how to verity method return type is Map<Foo,栏>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48307826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com