![]() |
1
17
正如其他人已经正确地说过的,使用dynamicproxy。这里有一个例子。 这个类使用dynamicProxy拦截在“hammerListener”接口中声明的方法调用。它做一些日志记录,然后委托给“真正的”hammerlistener实现(是的,同样的事情也可以用aop完成)。 请参见代理实例化的newInstance方法(注意,您需要传入代理应该实现的接口-代理可以实现多个接口)。 代理实现的接口上的所有方法调用都将作为对“invoke”方法的调用结束,该方法在“invocationhandler”接口中声明。所有代理处理程序都必须实现此接口。
|
![]() |
2
4
的输出
它不会像露比这样的动态语言那么简单,但是你要为像Java这样的强静态语言付出代价。 |
![]() |
3
2
请参见java.lang.reflect.proxy和java.lang.reflect.invocationhandler或面向方面编程(例如aspectj)。 |
![]() |
4
0
不完全是。最接近的等价物是 Dynamic Proxy 对象,但这有一些限制(即,只能通过反射调用)。 |
![]() |
mueslo Thomas Kühn · 修饰类方法以构建方法注册表 7 年前 |
![]() |
Mr.Dreamer · 类方法的python装饰器 7 年前 |
![]() |
Igor Pozdeev · 属性getter和上下文管理器 7 年前 |
![]() |
Miles P · Typescript类型检查不适用于我的装饰程序 7 年前 |
|
Ryohei · 如何在我的软件包中使用decorator 7 年前 |
|
user7696297 · python中的函数修饰符是什么 7 年前 |
![]() |
lilezek · 限制方法修饰符的使用 7 年前 |