使用JDT获取完整的方法名称 [英] Use JDT to get full method name

查看:184
本文介绍了使用JDT获取完整的方法名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

新新新新旗新新旗新新200新200新200新200新200新200新200新200新200新200新200新200新200新200新200新新200新200新新200新200新新200新新200新新200新新200新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新IE

  my.full.package.ClassName.methodName(int param,String string)

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

  private static String getMethodFullName(IMethod iMethod)
{
String packageString = [默认包];
try {
IPackageDeclaration [] declarations = iMethod.getCompilationUnit()。getPackageDeclarations();
if(declarations.length> 0)
{
packageString = declarations [0] .getElementName();
}
} catch(JavaModelException e){
}

String classString = iMethod.getCompilationUnit()。getElementName(); X- 2004545 X- 20045 X- 20045 X- 20045 X- 20045 X- 20045 X- 20045 X- 20045 X- 20045

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

返回packageString +。 + classString +。 + methodString;
}


解决方案

感谢iain和更多研究我已经提出了这个解决方案。看起来像这样的东西应该被内置到JDT ....

  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 name.append(逗号)
name.append(Signature.toString(parameterTypes [i]));
name.append();
name.append(parameterNames [i]);
逗号=,;
}
} catch(JavaModelException e){
}

name.append());

return name.toString();
}


I am new to eclipse plugin development and I am trying to convert a IMethod to a string representation of the full method name. I.E.

my.full.package.ClassName.methodName(int param, String string)

so far I have had to hand roll my own solution. Is there a better way?

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;
}

解决方案

Thanks to iain and some more research I have come up with this solution. It seems like something like this should be built into the JDT....

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();
}

这篇关于使用JDT获取完整的方法名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆