如何在Eclipse jdt 3.6中获取方法参数作为Java元素?

时间:2012-04-27 09:55:58

标签: java eclipse eclipse-plugin eclipse-jdt

出于兼容性原因,我必须将我的Eclipse插件从JDT 3.7改编为3.6。不幸的是,旧版本似乎没有方便的.getParameters()方法。

我需要向用户显示一个ElementTreeSelectionDialog,允许他浏览类的方法并选择方法的参数。为此,我用这个简单的getChildren编写了一个ITreeContentProvider方法:

public Object[] getChildren(Object paramObject) {       
        if(paramObject instanceof ICompilationUnit){
            ICompilationUnit icu = (ICompilationUnit) paramObject;
            try {
                return icu.getAllTypes()[0].getMethods();
            } catch (JavaModelException e) {
                e.printStackTrace();
            }
        }
        if(paramObject instanceof IType){
            IType type = (IType) paramObject;
            try {
                return type.getMethods();
            } catch (JavaModelException e) {
                e.printStackTrace();
            }
        }
        if(paramObject instanceof IMethod){
            IMethod method = (IMethod) paramObject;
            try {
                return method.getParameters();
            } catch (JavaModelException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

我想坚持使用接口来使用JavaUILabelProvider,它使用适当的图标,签名等显示所有内容。

因此,棘手的部分是从参数或其他一些有效的IJavaElement实现创建有效的LocalVariable对象,这些实现将由JavaUILabelProvider正确显示。

我尝试过创建一个LocalVariable []数组,但这并没有真正解决,因为我找不到任何方法来获取元素的必要位置标记和注释对象...

0 个答案:

没有答案