Diseño de interfaz para entidad jerárquica
Tengo que diseñar una interfaz para la entidad jerárquica:
interface HierarchicalEntity<T extends HierarchicalEntity<T>> {
T getParent();
Stream<T> getAncestors();
}
Es bastante fácil de implementar.defecto getAncestors()
método en términos degetParent()
de tal manera que el primero regresaríaStream
de todos los antepasados.
Ejemplo de implementación:
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();
}
Pero también necesito incluirthis
en la corriente, y aquí aparece un problema. La siguiente línea no es correcta porquethis
es de tipoHierarchicalEntity
noT
:
parentsBuilder.add(this); // type mismatch!
¿Cómo puedo rediseñar la interfaz para hacergetAncestors()
incluirthis
en el resultado?