gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:04 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

您可以使用

获取类型的完全限定名称
method.getDeclaringType().getFullyQualifiedName();

这可能比从编译单元访问包更容易。你们其余的功能看起来是正确的。

一个小问题:您应该使用 StringBuilder 来构建字符串而不是添加到标准字符串。字符串是不可变的,因此加法会产生大量不可恢复的临时对象。

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 = "";
for (String type : iMethod.getParameterTypes()) {
name.append(comma);
comma = ", ";
name.append(type);
}
name.append(")");

return name.toString();
}

关于java - 使用 JDT 获取完整的方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1712271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com