首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JDT获取完整的方法名称

使用JDT获取完整的方法名称
EN

Stack Overflow用户
提问于 2009-11-11 08:41:26
回答 3查看 3.3K关注 0票数 6

我是eclipse插件开发的新手,我正在尝试将IMethod转换为完整方法名称的字符串表示。也就是说。

代码语言:javascript
运行
复制
my.full.package.ClassName.methodName(int param, String string)

到目前为止,我不得不手摇我自己的解决方案。有没有更好的方法?

代码语言:javascript
运行
复制
private static String getMethodFullName(IMethod iMethod)
{
    String packageString = "[Default Package]";
    try {
        IPackageDeclaration[] declarations = iMethod.getCompilationUnit().getPackageDeclarations();
        if(declarations.length > 0)
        {
            packageString = declarations[0].getElementName(); 
        }           
    } catch (JavaModelException e) {
    }

    String classString = iMethod.getCompilationUnit().getElementName();
    classString = classString.replaceAll(".java", "");

    String methodString = iMethod.getElementName() + "(";
    for (String type : iMethod.getParameterTypes()) {
        methodString += type + ",";
    }
    methodString += ")";

    return packageString + "." + classString + "." + methodString;
}
EN

Stack Overflow用户

回答已采纳

发布于 2009-11-13 03:37:15

多亏了iain和更多的研究,我想出了这个解决方案。看起来像这样的东西应该内置于JDT中……

代码语言:javascript
运行
复制
import org.eclipse.jdt.core.Signature;

private static String getMethodFullName(IMethod iMethod)
{
        StringBuilder name = new StringBuilder();
        name.append(iMethod.getDeclaringType().getFullyQualifiedName());
        name.append(".");
        name.append(iMethod.getElementName());
        name.append("(");

        String comma = "";
        String[] parameterTypes = iMethod.getParameterTypes();
        try {
            String[] parameterNames = iMethod.getParameterNames();
            for (int i=0; i<iMethod.getParameterTypes().length; ++i) {
                name.append(comma);
                name.append(Signature.toString(parameterTypes[i]));
                name.append(" ");
                name.append(parameterNames[i]);
                comma = ", ";
            }
        } catch (JavaModelException e) {
        }

        name.append(")");

        return name.toString();
}
票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1712271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档