Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EclipseJDT核心-解析参数化超级方法的通用返回类型_Java_Eclipse_Eclipse Jdt - Fatal编程技术网

Java EclipseJDT核心-解析参数化超级方法的通用返回类型

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获取

我是v。对JDTAPI缺乏经验,所以如果有人能帮助我,那就太好了

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

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: