如何查找一个方法中调用的所有方法?

2023-12-30

如何在特定方法中调用其他类的方法?

EXAMPLE

方法 getItem1()

public String getItem1() throws UnsupportedEncodingException{
    String a = "2";
    a.getBytes();
    a.getBytes("we");
    System.out.println(a);
    int t = Integer.parseInt(a);
    return a;
}

调用的方法getItem1() are:

  1. String.getBytes()
  2. String.getBytes(String)
  3. PrintStream.println(String)
  4. Integer.parseInt(String)

我会这样做javassist http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/.

假设您的类路径中有以下可访问的类,并且想要查找从中调用的所有方法获取项目1():

class MyClass {
  public String getItem1() throws UnsupportedEncodingException{
    String a = "2";
    a.getBytes();
    a.getBytes("we");
    System.out.println(a);
    int t = Integer.parseInt(a);
    return a;
  }
}

您已经编译了这个 MyClass。 创建另一个使用 javassist api 的类:

public class MethodFinder {

  public static void main(String[] args) throws Throwable {
    ClassPool cp = ClassPool.getDefault();
    CtClass ctClass = cp.get("MyClass");
    CtMethod method = ctClass.getDeclaredMethod("getItem1");
    method.instrument(
        new ExprEditor() {
            public void edit(MethodCall m)
                          throws CannotCompileException
            {
                System.out.println(m.getClassName() + "." + m.getMethodName() + " " + m.getSignature());
            }
        });
  }
}

MethodFinder 运行的输出为:

java.lang.String.getBytes ()[B   
java.lang.String.getBytes (Ljava/lang/String;)[B   
java.io.PrintStream.println (Ljava/lang/String;)V   
java.lang.Integer.parseInt (Ljava/lang/String;)I   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查找一个方法中调用的所有方法? 的相关文章

  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • CodeIgniter:My_Lang 中的 get_instance

    我发现这个有用的国际化代码 http pastebin com SyKmPYTX http pastebin com SyKmPYTX 一切正常 除了我无法在此类中使用 CI 函数 我想从 DB 设置 languages 和 special
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • Symfony 的缓存和权限错误

    我在缓存中遇到了这个连续错误 有权限的东西 但我不知道发生了什么 在我当地的环境中 当我去php bin console cache clear e dev它返回给我这个 Symfony Component Filesystem Excep
  • 捕获 _this_ 的 lambda 中的函数名称解析 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在查看
  • 将十六进制转换为浮点 SQL

    我正在尝试寻找一种转换方法HEX to a float在 SQL Server 中 一个示例值是0x42c80000这对应于100 00 这个很容易转换Hex值对Int using CONVERT但我找不到等效的浮点转换 DECLARE B
  • Activator.CreateInstance:无法从程序集中加载类型

    我正在尝试创建在我的项目中的插件 dll 中实现的类的实例来进行类型发现 我收到这个异常 无法从程序集中加载类型 Action SquidReports DataCollector Plugin BES 版本 1 0 0 0 文化 中立 P
  • 将脚本放在网页底部是否可以加快页面加载速度?

    雅虎最佳实践指出将 JavaScript 文件放在底部 http developer yahoo com performance rules html js bottom可能会使您的页面加载速度更快 这方面的经验是什么 如果有的话 副作用是
  • 可以用“and”、“or”等代替“&&”、“||”吗?

    我已经习惯了and and orC 中的关键字 我一直在使用它们 并且打字对我来说既快速又舒适 我听说这些别名是非标准的 可能不适用于所有编译器 但我不确定 我真的不知道这是不是真的 假设我把我的代码交给某人 他在编译时会遇到问题吗 我用的
  • 语句handle(hstmt)到底是做什么的?在 ODBC 中

    我是为 ODBC 编写 C 代码的新手 但在这里我有一个问题 在搜索了 C 的 odbc 函数教程的教程后 我仍然无法准确地得到 他们如何协作 该语句处理 hstmt 对数据库数据到底有什么作用 我知道它控制我作为参数提供的 SQL 查询语
  • 如何将唯一数字附加到字符串列表

    我有这个函数 它可以工作并给出正确的结果
  • 忽略精灵透明区域的像素完美碰撞

    我最近从这个链接中发现了两个精灵之间的像素完美碰撞 http www cocos2d iphone org forum topic 18522 http www cocos2d iphone org forum topic 18522 我只
  • git diff,显示删除和添加的同一行

    我不小心在master上工作 在那里我不得不开设一个新的分支 我几乎把它完全恢复到原来的样子 在一节课上 我得到了以下我无法理解的差异 index 4a9abb8 7c55879 100755 a includes site inc php
  • 将 proguard 与 espresso/androidTest 一起使用

    我正在尝试配置 proguard 以将其与我的 espresso UI 测试风格一起使用 问题是 Proguard 倾向于忽略我的调试 proguard 配置 配置如下 buildTypes debug minifyEnabled true
  • Keras中的自定义损失函数,如何处理占位符

    我正在尝试在 TF Keras 中生成自定义损失函数 如果损失函数在会话中运行并传递常量 则该损失函数可以工作 但是 当编译到 Keras 中时 它会停止工作 成本函数 感谢 Lior 将其转换为 TF def ginicTF actual
  • 水平 recylerview 与 viewpager 滚动同步滚动

    我有一个带有一些值的视图寻呼机 与 recyclerview 上方的 recyclerview 的计数相同 就像 tablayout 一样 我已经使用 snap helper 实现了该功能 并且一切正常 我唯一想要的就是我想将 recycl
  • 无法使用 PowerShell 从远程服务器访问环境变量

    我有一个脚本来查询远程 Windows 服务器列表 以检索我创建的环境变量的值 我可以看到该变量确实存在 因为当我打印所有变量时我可以看到它 EnvObj try Name MY VAR VerbosePreference Continue
  • Typo3 ke_search 扩展致命错误

    我对 Typo3 还很陌生 如果我不明白这里的问题是什么 我很抱歉 我安装了扩展 ke search 并遵循 很多次 给出的基本和简单的说明 https www typo3 macher de en facetted search ke s
  • 将 json 解组为类型

    我得到以下数据 timestamp 1526058949 bids 7215 90 2 31930000 7215 77 1 00000000 通过 websocket 我想将其解组到 type OrderBookItem struct P
  • 如何为 Linux、OS X、Windows 制作 Travis CI 测试包?

    有没有办法告诉 Travis CI 或其他持续集成服务 在不同的操作系统上测试包 使用文件系统 最好仔细检查它是否与平台无关 Update 3 Windows 支持已发布 您现在可以在 Linux macOS 和 Windows 上使用 T
  • 将 vue 组件传递给子组件

    我正在尝试创建一个 Vue 组件 该组件将接受组件作为参数来显示数据 但我无法弄清楚如何使其工作 如果我全局注册显示组件 使用 Vue component 它可以工作 但如果我在本地注册它 则会出现以下错误 Vue warn Unknown
  • Android 任务管理器或系统对话框

    我想知道有没有一种方法可以在显示系统对话框时获取事件 例如任务管理器 关闭警报 我可以通过如下意图从我的活动中关闭系统对话框 Intent closeDialog new Intent Intent ACTION CLOSE SYSTEM
  • 如何查找一个方法中调用的所有方法?

    如何在特定方法中调用其他类的方法 EXAMPLE 方法 getItem1 public String getItem1 throws UnsupportedEncodingException String a 2 a getBytes a