根据我的理解,有界多态是保证了子类的使用安全,不会返回同一个父类下的不同子类。
Sample代码如下:
abstract class QueryPlan[PlanType <: QueryPlan[PlanType]] extends TreeNode[PlanType] {}
这是QueryPlan的一个子类。
abstract class LogicalPlan
extends QueryPlan[LogicalPlan]
with AnalysisHelper
with LogicalPlanStats
with QueryPlanConstraints
with Logging {}
这是QueryPlan的一个子类。
abstract class SparkPlan extends QueryPlan[SparkPlan] with Logging with Serializable{}
这样的语义可以两个子类中的父类中的type变量绑定为子类自身的type,而不是其他子类的Type。