如何在Java类中修改或替换私有方法

Ayvango

我有一堂课,我想更改其行为。我需要将私有方法替换为另一种实现。通用的反射技术允许修改私有变量或调用私有方法。但是我发现有关替换整个方法的信息很少。

我认为有先进的技术可以做到这一点。使用标准Java反射可能无法实现,但是可能还有其他工具可以在运行时重新编译字节码。

图库西

修改并替换:

一种选择是用修改后的副本掩盖该类(修改代码,重新编译代码,修补类之前将修改后的类添加到类路径中),类似于此处检查通常不可用的方法如何工作的方法。

如果您没有需要修改的源代码,则可以使用反编译器将几乎所有.class文件“反向”为或多或少可读的源代码请注意,根据许可的不同,您可能无权这样做和/或重新分发您的更改。

通过代理修补:

您也可以使用-javaagent:<jarpath>[=<options>]命令行选项来修补方法“代理”是一个jar,可用来修改已加载的类并更改其行为。更多信息在这里

嘲笑:

如果你有控制其中的方法被调用,您可以用存根的版本替换目标实例。Mockito之类的使此操作非常非常简单:

LinkedList mockedList = mock(LinkedList.class);
// stubbing appears before the actual execution
when(mockedList.get(0)).thenReturn("first");

即使Mockito不本地支持模拟私有方法(主要是因为查看其他类的私有方法被认为是不好的方式),但使用PowerMock可以这样做(谢谢@talex)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在es6类中声明私有变量和私有方法

来自分类Dev

如何在C ++中的Normal或Singleton类内GoogleTest私有方法/枚举类

来自分类Dev

如何在目标C中从超类重写私有方法和属性

来自分类Dev

如何在Javascript类中从“私有方法”访问“公共变量”

来自分类Dev

如何在目标C中从超类重写私有方法和属性

来自分类Dev

如何在C#中隐藏基类的私有方法?

来自分类Dev

动态绑定如何对Java基类中的私有方法起作用?

来自分类Dev

动态绑定如何对Java基类中的私有方法起作用?

来自分类Dev

如何在Rust中测试私有方法?

来自分类Dev

如何在ruby中定义私有方法?

来自分类Dev

Java继承中的私有方法

来自分类Dev

Java继承中的私有方法

来自分类Dev

具有许多私有方法的Java测试类

来自分类Dev

如何在类内使用私有方法反序列化PyTorch保存的模型?

来自分类Dev

如何在具有私有方法的Jest中模拟HTTP方法

来自分类Dev

如何对Mockito测试的类的私有方法进行存根

来自分类Dev

在Swift中访问父类的私有方法

来自分类Dev

最新Chrome中的类私有方法

来自分类Dev

在(非)静态类中重写私有方法

来自分类Dev

在Swift中访问父类的私有方法

来自分类Dev

在导入的类中调用私有方法

来自分类Dev

如何在类中循环所有方法和对象?(java)

来自分类Dev

此私有方法在此Singleton Java类中做什么?

来自分类Dev

如何使用Traceur在ES6类中实现私有方法

来自分类Dev

如何在测试方法中模拟受保护/私有方法?

来自分类Dev

如何在Jmockit中模拟私有方法时匹配“ any”参数类型

来自分类Dev

如何在javascript中重新定义私有方法?

来自分类Dev

如何在Jmockit中模拟私有方法时匹配“ any”参数类型

来自分类Dev

如何在Delphi 10.1 Berlin中访问私有方法TStreamReader.FillBuffer?

Related 相关文章

  1. 1

    如何在es6类中声明私有变量和私有方法

  2. 2

    如何在C ++中的Normal或Singleton类内GoogleTest私有方法/枚举类

  3. 3

    如何在目标C中从超类重写私有方法和属性

  4. 4

    如何在Javascript类中从“私有方法”访问“公共变量”

  5. 5

    如何在目标C中从超类重写私有方法和属性

  6. 6

    如何在C#中隐藏基类的私有方法?

  7. 7

    动态绑定如何对Java基类中的私有方法起作用?

  8. 8

    动态绑定如何对Java基类中的私有方法起作用?

  9. 9

    如何在Rust中测试私有方法?

  10. 10

    如何在ruby中定义私有方法?

  11. 11

    Java继承中的私有方法

  12. 12

    Java继承中的私有方法

  13. 13

    具有许多私有方法的Java测试类

  14. 14

    如何在类内使用私有方法反序列化PyTorch保存的模型?

  15. 15

    如何在具有私有方法的Jest中模拟HTTP方法

  16. 16

    如何对Mockito测试的类的私有方法进行存根

  17. 17

    在Swift中访问父类的私有方法

  18. 18

    最新Chrome中的类私有方法

  19. 19

    在(非)静态类中重写私有方法

  20. 20

    在Swift中访问父类的私有方法

  21. 21

    在导入的类中调用私有方法

  22. 22

    如何在类中循环所有方法和对象?(java)

  23. 23

    此私有方法在此Singleton Java类中做什么?

  24. 24

    如何使用Traceur在ES6类中实现私有方法

  25. 25

    如何在测试方法中模拟受保护/私有方法?

  26. 26

    如何在Jmockit中模拟私有方法时匹配“ any”参数类型

  27. 27

    如何在javascript中重新定义私有方法?

  28. 28

    如何在Jmockit中模拟私有方法时匹配“ any”参数类型

  29. 29

    如何在Delphi 10.1 Berlin中访问私有方法TStreamReader.FillBuffer?

热门标签

归档