gpt4 book ai didi

java - Eclipse JDT Core - 解析参数化 super 方法的通用返回类型

转载 作者:行者123 更新时间:2023-12-02 11:33:22 25 4
gpt4 key购买 nike

我对 JDT api 缺乏经验,所以如果有人可以帮助我,那就太好了。

我的问题是如何解析下面代码中测试方法的返回类型?

public interface BaseInterface<T> {
T test();
}

public interface Messages extends BaseInterface<String> {}

我尝试过在 google 和 stackoverflow 上进行各种搜索(ASTParser、访问者、方法绑定(bind)等),但似乎找不到一种简单的方法来使用 JDT 获取返回类型。

编辑***这与我在https://github.com/gwt-plugins/gwt-eclipse-plugin/issues/373中创建/发现的错误有关。 ,并试图修复它。我第一次使用 JDT 和 gwt-eclipse 插件代码,所以这只是一个尝试,不确定您是否可以提供任何建议。整个事情可能需要以稍微不同的方式进行攻击。

它首先调用 JavaModelSearch.findMethodInHierarchy,它获取 IMethod,并将其向下传递,但随后无法确定 T 的返回类型

最佳答案

您应该首先找到接口(interface)“Messages”的org.eclipse.jdt.core.dom.ITypeBinding

从那里您可以导航到 getSuperclass() 或在您的情况下导航到 getInterfaces()。这应该授予对参数化类型“BaseInterface ”的访问权限 (注意,轻量级 JavaModel 由 ITypeIMethod 等不支持此处所需的参数化类型的概念)

从后一个绑定(bind)中,询问 getDeclaredMethods() 应该回答所需的方法“String test()”,返回类型确实为“String”。

为了获得更多灵感,您可能需要查看内部方法 org.eclipse.jdt.internal.corext.dom.Bindings .findMethodInHierarchy(ITypeBinding, String, ITypeBinding[]).

关于java - Eclipse JDT Core - 解析参数化 super 方法的通用返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49117612/

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