1

出于兼容性原因,我必须将我的 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 []数组,但这并没有真正奏效,因为我找不到任何方法来获取元素的必要位置标记和注释对象......

4

0 回答 0