gpt4 book ai didi

java - 监听类中何时调用方法,然后可能覆盖它(java)

转载 作者:行者123 更新时间:2023-12-01 07:09:06 25 4
gpt4 key购买 nike

所以,假设我有 2 个类,Foo1 和 Foo2,它们位于一个单独的库中。

Foo2 是一个已经实例化的类,我无法正确地将其重新创建为子类来重写 Foo2 中的方法。

有什么方法可以监听 Foo2 中调用的某个方法,然后可能取消该方法的执行,并从那里创建另一个方法。我理解如果我所说的令人困惑,希望我能得到一些帮助:)。

    class Foo{

void x(){
if (Foo2.x2().called){
//do stuff
}
}
}

class Foo2{
void x2(){
//Stuff done here...
}
}

显然,上面的代码不会做任何事情,它只是我正在寻找的一个简单的例子。

最佳答案

您需要该对象上的代理和方法上的拦截器。有几种方法可以做到这一点:

  1. 如果您有接口(interface),则可以使用反射、代理和调用处理程序 docs.oracle.com/javase/6/docs/api/java/lang/reflect/Proxy.html。

  2. 如果您有一个具体的类,您可以使用 CGLIB cglib.sourceforge.net 为您的类创建增强器

  3. 如果您使用 Spring,则可以使用 AOP http://static.springsource.org/spring/docs/2.5.5/reference/aop.html .

  4. 您还可以使用 AspectJ http://www.eclipse.org/aspectj/doc/next/progguide/做同样的事情

    干杯!

关于java - 监听类中何时调用方法,然后可能覆盖它(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17583196/

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