Java EclipseJDT核心-解析参数化超级方法的通用返回类型
我是v。对JDTAPI缺乏经验,所以如果有人能帮助我,那就太好了 我的问题是如何在下面的代码中解析测试方法的返回类型Java EclipseJDT核心-解析参数化超级方法的通用返回类型,java,eclipse,eclipse-jdt,Java,Eclipse,Eclipse Jdt,我是v。对JDTAPI缺乏经验,所以如果有人能帮助我,那就太好了 我的问题是如何在下面的代码中解析测试方法的返回类型 public interface BaseInterface<T> { T test(); } public interface Messages extends BaseInterface<String> {} 我尝试过在google和StackParser、visitor、方法绑定等上进行各种搜索,但似乎找不到一种简单的方法来使用JDT获取
public interface BaseInterface<T> {
T test();
}
public interface Messages extends BaseInterface<String> {}
我尝试过在google和StackParser、visitor、方法绑定等上进行各种搜索,但似乎找不到一种简单的方法来使用JDT获取返回类型
编辑***
这与我在其中创建/发现的一个bug有关,我正试图修复它。我第一次同时使用JDT和gwt eclipse插件代码,所以这只是一个尝试,不确定您是否可以给出任何建议。整个事情可能需要以一种稍微不同的方式进行攻击
它首先调用JavaModelSearch.findMethodInHierarchy,该Hierarchy获取IMethod并向下传递,但随后无法确定t的返回类型。您应该首先找到接口消息的org.eclipse.jdt.core.dom.ITypeBinding
从那里你可以导航到getSuperclass,或者在你的例子中是getInterfaces。这应该授予对参数化类型BaseInterface的访问权限注意,由IType、IMethod等组成的轻量级JavaModel不支持此处所需的参数化类型的概念
在后一个绑定中,询问getDeclaredMethods应该使用返回类型String回答所需的方法String测试
为了获得进一步的启发,您可能希望查看内部方法。findMethodInHierarchyITypeBinding,String,ITypeBinding[]。您希望得到什么结果?你试过什么?为了澄清这个问题:您对-BaseInterface.test或Messages.test哪个方法感兴趣?谢谢Stephen,我编辑了这个问题以包含更多信息,如果这有帮助的话。非常感谢您提供的详细信息,我可能会尝试在下班后整理这个bug: