包装类不适合回调框架
2022-09-03 14:56:06
包装类的缺点很少。需要注意的是,包装类不适合在回调框架中使用,其中对象将自引用传递给其他对象以进行后续调用(“回调”)。由于包装对象不知道其包装器,因此它会传递对自身的引用(this),并且回调会避开包装器。
有人可以用一个例子来解释这意味着什么吗?它是用有效的Java编写的,但我并不完全理解它。
为了添加到上下文中,我们应该支持组合,而不是继承,这会导致子类,我们应该使用这样的东西:Set
public class ForwardingSet<E> implements Set<E> {
private final Set<E> s;
public ForwardingSet(Set<E> s) { this.s = s; }
public void clear() { s.clear(); }
public boolean contains(Object o) { return s.contains(o); }
...
}
但是,这将如何失败,我仍然无法理解回调。在JavaScript中,我们可以使用函数回调,但是如果有人可以解释,那么相同的概念如何适用于Java。