gpt4 book ai didi

java - 如何判断 TypeElement 是否间接实现接口(interface)

转载 作者:搜寻专家 更新时间:2023-11-01 02:47:46 25 4
gpt4 key购买 nike

getInterfaces() TypeElement 的方法只返回元素直接实现的接口(interface)。是否有一种简单的方法来查找给定的 TypeElement 是否间接实现了给定的接口(interface)?

也就是说,我有一个 TypeElement,我想知道它是否从给定接口(interface)下降到该行的某处。

最佳答案

我从来没有实际使用过这些东西,只是阅读有关它的信息。

我相信您可以迭代返回的类型并使用 Types#isAssignable(TypeMirror t1, TypeMirror t2)检查它们中的任何一个是否可分配给您正在寻找的接口(interface)(在这种情况下,如果 a 是 b 或 b 是 a 的超接口(interface),则 a 可分配给 b —— 但完整定义请参见 JLS section 5.2 )。像这样的东西:

public static boolean implementsInterface (TypeElement myTypeElement, TypeMirror desiredInterface) {
for (TypeMirror t : myTypeElement.getInterfaces())
if (processingEnv.getTypeUtils().isAssignable(t, desiredInterface))
return true;
return false;
}

或者,更好的是,直接像这样(也许):

public static boolean implementsInterface (TypeElement myTypeElement, TypeMirror desiredInterface) {
return processingEnv.getTypeUtils().isAssignable(myTypeElement.asType(), desiredInterface);
}

processingEnvProcessingEnvironment (请参阅下面 ThePyroEagle 的评论)。

抱歉,我无法对此进行测试,而且,我只是基于 documentation .你应该自己测试这些。

希望对您有所帮助。

关于java - 如何判断 TypeElement 是否间接实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18198765/

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