我必须为分层实体设计一个接口:
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
在结果中?