使用JDT获取完整方法名

2024-06-24

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

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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用JDT获取完整方法名 的相关文章

  • eclipse mylyn 与 redmine

    是否可以将mylyn连接到redmine而不需要redmine中的rest支持 有一个链接http download eclipse org mylyn incubator 3 8 http download eclipse org myl
  • 多线程以原子方式对大量值求和

    我正在开发一个应用程序 其中有大量线程 并且必须自动添加 100 个值 我在用AtomicLong效果很好 但仍需要提高性能 有没有比 AtomicLong 提供更好性能的东西 您可以使用长加法器 https docs oracle com
  • 我的应用程序中的 google+ 集成

    我是 Android 开发新手 正在创建一个带有 Google 集成的 Android 应用程序 我看到了一个教程并开始遵循它 但自教程以来 Google 已经更新了 Google 集成 例如 在本教程中您曾经单击 获取配置文件 按钮htt
  • Java无法读取字体

    好的 我在使用自定义字体时遇到问题 基本上我得到了从互联网上下载的自定义字体并在我的程序中使用它 当我在 Eclipse 我使用的编辑器 中运行该程序时 一切正常 没有问题 但是 每当我将它从 eclipse 导出到 jar 时 或者尝试从
  • 有没有办法获取 JList 中的所有元素?

    我想知道是否有一种方法可以检索已添加到 JList 的所有元素的列表 例如 我希望 JList 从自定义单元格渲染器返回字符串或 JLabels 的数组或列表 您可以使用getModel http docs oracle com javas
  • 从 ArrayList Java 中的 HashMap 键中检索所有值

    美好的一天 这让我现在有点困惑 大脑冻结 并且似乎遗漏了一些东西 有一个 ArrayList 我用 HashMap 填充它 现在我放入 HashMap 和 arraylist Map put DATE value1 Map put VALU
  • 为什么这个 Java 静态字段为空?

    public class StaticTest private static String a private static String b this is a public static void main String args a
  • HQL - 分页的行标识符

    有谁知道HQL是否有一个关键字来标识行 例如ROWID或ROWNUM 我想使用 HQL 实现分页 但我无法使用 setMaxResult 或 setFirstResult 因为我不直接使用会话对象 因此不使用 Query 对象 而只是将查询
  • Linux 上的 JavaFX

    Linux x86 和 x64 上的 JavaFX 情况如何 JavaFX 应用程序可以在 Linux 操作系统上顺利执行吗 我发现了 2011 年和 2012 年的一些问题 当时应用程序不稳定 目前发布的 JFX 版本是 2 2 4 在
  • 如何从资源服务器中的 Spring Security OAuth2 Boot 中提取声明?

    我有一个使用 Net Core 内置的授权服务器身份服务器4 https identityserver4 readthedocs io en latest 它正在按预期工作 从 Node Js 和 Net 授权客户端和资源 现在我尝试添加
  • Java写入ByteArrayOutputStream内存泄漏

    我正在将图像字节写入ByteArrayOutputStream然后通过套接字发送它 问题是 当我这样做时 ImageIO write image gif byteArray 内存增加很多 有点内存泄漏 我用这个发送 ImageIO writ
  • Selenium 和 xpath:查找带有类/id 的 div 并验证其中的文本

    我正在努力拥有xpath find a div并验证div有一个特定的string里面的文字 这是HTML div class Caption Model saved div and div class gwt HTML sfnStanda
  • 面临 process.start(); 的问题在 Android 棒棒糖中

    面临一个问题process start 在 Android 棒棒糖中 我在服务中遇到了 android lollipop 后台进程的问题 我的代码在 KitKat 之前工作正常 我有一个ProcessBuilder pBuilder并向其中
  • Java 多态性中的字段如何工作? [复制]

    这个问题在这里已经有答案了 我正在读书面试问题 http javabypatel blogspot in 2016 04 java interview questions html关于java 发现了很好的例子 但感到困惑 因为没有很好 更
  • Finalize() 何时执行? [复制]

    这个问题在这里已经有答案了 在一次采访中我被问到 假设 JVM 在 A 类对象未被使用时运行 gc class A some code here protected void finalize code here 它是否保证finalize
  • NoSuchMethodError:org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute

    我正在尝试在 spring boot 应用程序中使用 spring data redis 来使用 redis 我正在创造JedisConnectionFactory如下 RedisStandaloneConfiguration config
  • JRuby调用了错误的方法

    我在调用 Java 方法时遇到了一个奇怪的问题JRuby http en wikipedia org wiki JRuby 在我的 Java 类中 这些方法定义了两次 看来 JRuby 调用了错误的方法 所以我尝试使用java method
  • SwingWorker 和 Executor 的区别

    我正在使用 SwingWorker 在我正在制作的应用程序上执行一些重负载任务 虽然今天我遇到了 Executor 类和这个例子 Executors newCachedThreadPool execute new Runnable publ
  • 是否可以在 Eclipse 中为除 Java 之外的 Eclipse 编写插件?

    谁能帮我用c 写一个eclipse插件 weekens 和 celavek 感谢您提供的信息 我正在研究 JNI 并将尝试实现它 celavek 我们必须做什么样的主控 控制 在C 和java接口中处理是否风险更大 我的要求是在 Java
  • Java:当计时器处于活动状态时,JSplitPane 将顶部面板的内容复制到底部面板

    所以我有一个 JSplitPane 和两个 JPanel 一个在顶部 一个在底部 在这两个面板中 我重写了paintComponent方法并添加了我自己的图形 在底部面板中 我想添加动画 当面板不重新绘制时 这很好 但是一旦计时器 java

随机推荐

  • .Net 中的 Midi 实现

    有人对在 C Winforms 中编写基于 MIDI 的应用程序有任何指导或建议吗 我最近购买了一个新的效果踏板 它具有完整的 MIDI 实现 或者我相信 但制造商认为不发布图书馆员 补丁编辑应用程序是合适的 除了将键盘插入另一个 MIDI
  • 启动包中没有指定postgresql用户名

    public class HelloPostgreSQLActivity extends Activity TextView resultArea Override public void onCreate Bundle savedInst
  • Erlang:远程调用与发送消息

    我想在远程节点上执行一些过程 我不确定哪种方法是最好的方法 我可以写一个rpc call去做这个 或通过以下方式发送消息Remote call some procedure 到节点来启动程序并使用receive等待回复 那么erlang中哪
  • 将数据从 Django 传递到 D3

    我正在尝试使用 Django 和 D3 js 编写一个非常基本的条形图 我有一个名为 play 的对象 其中包含一个名为 date 的日期时间字段 我想要做的是显示一段时间内按月分组的播放次数 基本上我有两个问题 如何将这些内容按月分组并统
  • 应用程序在后台时如何处理 iOS 远程通知

    我正在通过苹果推送通知开发iOS推送通知功能 现在当我的应用程序处于后台或前台时我收到了正确的通知 但我想当我的应用程序处于后台时基本上当我的应用程序处于后台时处理远程通知只是显示来自有效负载的警报消息 实际上我只是想自定义我的远程通知 c
  • 亚马逊网络服务工作示例

    我进行了各种搜索 尝试让产品广告 API 正常工作 我尝试了来自这些论坛和互联网的许多示例 但它不起作用 有人讨论过修改 WSDL 但这也不起作用 这是我去过的地方 https affiliate program amazon com gp
  • NSProxy 如何“将自身转变为另一个对象”?

    The NSProxy 类参考 http developer apple com library mac documentation Cocoa Reference Foundation Classes NSProxy Class Refe
  • 如果运行战争,oracle 和 sybase 数据库连接会出现 ClassNotFoundError,但在 eclipse 中工作正常

    我在应用程序中构建了一个功能来测试数据库连接 在本地 我能够测试所有三个数据库 sqlserver sybase 和 oracle 但如果创建 war 文件并在 Windows Linux 服务器中运行 war 则 Oracle 和 syb
  • 过滤器链因 [:login_required] returned_or_redirected 而停止

    希望我能很好地解释这一点 但如果需要更多信息 请告诉我 我正在构建一个表单 用户可以在其中创建 事件 此次事件有如下关系 属于 客户 客户有很多事件 belongs to 用户 用户有很多事件 has one incident status
  • 如何在Python中检查神秘的反序列化对象

    我正在尝试将 JSON 加载回对象中 loads 方法似乎工作正常 但该对象似乎没有我期望的属性 我怎样才能检查 检查我拥有的对象 这是基于网络的代码 results Subscriber firstname Neal lastname W
  • 获取背景图片url值

    我正在尝试获取背景图像 url 的值 url 直接在元素标签中使用 style 属性内联设置 如下所示 a style background image none a 我尝试做 var url this css background ima
  • 使用 ESC 关闭引导模式

    我正在使用 2 个模态 第一个模态包含一个表单 第二个模态在表单中发生错误时显示 第二个模式仅包含带有错误消息的文本 My problem is that when 2nd modal show up and I press Esc the
  • 如何在heroku-django项目中设置环境变量?

    我的 settings py 中有这段代码 EMAIL HOST smtp sendgrid net EMAIL HOST USER os environ get EMAIL HOST USER EMAIL HOST PASSWORD os
  • 添加依赖项会出现错误:“react-scripts”未被识别为内部或外部命令、可操作程序或批处理文件”

    还有其他人遇到这个问题吗 当我使用 create react app 创建一个新项目 并且添加除库存依赖项之外的任何依赖项 即react redux redux react router dom 时 我收到以下错误 react script
  • 为什么 CSV 文件中的多行单元格在 Excel 中每行末尾都显示有问号?

    我目前正在开发一个项目 我们希望允许用户将数据导出到 CSV 我们提供的一些数据在单个单元格中具有多个值 因此我们使用标准 CSV 方法将每个值放在自己的行上 Column A Column B Column C Value A Value
  • 基于每个应用程序域的字符串哈希码计算的实际使用

    在 NET 4 5 中 可以选择使用随机字符串哈希代码生成 这意味着 同一个字符串在不同的应用域中计算出的哈希码将会不同 看http msdn microsoft com en us library jj152924 aspx http m
  • 是否应该在使用 MVC 的每个视图中使用 ViewModel?

    我了解您使用 ViewModel 来存储来自其他模型和源的不同数据以在视图中使用 因为模型并不总是包含您想要的内容 我试图弄清楚为每个视图使用 ViewModel 是否合适 我问的原因是出于一致性原因 您可以有一个仅需要模型本身的视图 以及
  • 有没有办法编写 BSTR 文字?

    当调用需要 BSTR 的函数时 最好能够编写如下内容 iFoo gt function bs HELLO 然而 我知道的唯一解决方法是使用一个调用的包装器SysAllocString等等 例如 iFoo gt function WideSt
  • 使用 Python 使用正确的编码从 Oracle 导入

    我很抱歉提出一个字符编码问题 因为我知道你们每天都会遇到很多问题 但我无法弄清楚我的问题 所以我还是问了 这是我们正在做的事情 使用 Python 从 Oracle DB 获取数据并cx Oracle 使用 Python 将数据写入文件 使
  • 使用JDT获取完整方法名

    我是 eclipse 插件开发的新手 我正在尝试将 IMethod 转换为完整方法名称的字符串表示形式 IE my full package ClassName methodName int param String string 到目前为