java - Java中如何实现对象代理或类代理?

标签 java spring proxy-classes dynamic-class-loaders proxy-object

我需要在我的项目中扩展 .class 文件,并且需要重写一个简单的方法。考虑我有一个类 A,它位于某个 .jar 包中。现在我想重写类 A 的 test() 方法。我使用创建 A 的子类 B 并重写它来做到这一点。 现在在我的应用程序包(它是.jar)中为A类创建了对象。该对象调用A类的方法。但我想调用B类的方法。

我的想法是在整个应用程序中代理对象创建。每当创建 A 类的对象时,我想要一些配置来创建 B 类的对象并移交给 A 类启动。

请有人帮助我实现这种类型的机制。

最佳答案

仅当构造函数是私有(private)时,您才能阻止或控制类实例化。

如果无法覆盖原来的基类,又想代理它,就需要一个工厂,建议程序员使用工厂,而不是直接调用基类的构造函数。

在工厂代码中,您可以返回一个作为基类代理运行的子类。

Remember that this is only an advice. You can't block programmers to manually create instances of a class with a public constructor.

关于java - Java中如何实现对象代理或类代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31455312/

相关文章:

java - 如何分析传入消息(Android 上的 JavaFX)

java - 从 Intent 服务调用 Activity 方法

java - 与 ConditionalOnMissingBean 相反

java - Sprint 事务 - 如果内部事务失败,则需要 REQUIRES_NEW 行为

javascript - 如何使用 WSDL 实用程序生成的 JavaScript 类?

java - 无法获取准确的类名

java - 如何修改默认 JVM 设置

java - Ant - 没有公共(public)执行()错误,即使它存在

java - 从 Spring bean 中以字符串形式检索属性/值

java - Bytebuddy如何高效包装POJO?