我必须为分层实体设计一个接口:
interface HierarchicalEntity<T extends HierarchicalEntity<T>> {
T getParent();
Stream<T> getAncestors();
}
实现默认 getAncestors()方法很容易getParent(),因为前者将返回Stream所有祖先。
实现示例:
default Stream<T> getAncestors() {
Stream.Builder<T> parentsBuilder = Stream.builder();
T parent = getParent();
while (parent != null) {
parentsBuilder.add(parent);
parent = parent.getParent();
}
return parentsBuilder.build();
}
但是我还需要包含this到流中,这里出现了一个问题。以下行不正确,因为this它是 type HierarchicalEntity,而不是T:
parentsBuilder.add(this); // type mismatch!
如何重新设计界面以getAncestors()包含this在结果中?