我想覆盖我无法控制的工厂提供给我的对象中的方法。
我的具体问题是,我想覆盖 的getInputStream 和 getOutputStream方法 一的 Socket对象 进行 线记录 。
通用问题如下:
public class Foo { public Bar doBar() { // Some activity } }
我想实例化Foo并doBar用我自己的实例替换的位置,如下所示:
Foo
doBar
Bar doBar() { // My own activity return original.doBar(); }
对于套接字,我将返回一个 InputStream 和 OutputStream ,它们通过记录来包装以拦截数据。
由于Java使用基于类的OO,所以这是不可能的。您可以做的是使用装饰器模式,即为返回包装流的对象编写包装器。