Scala中的递归DataType

uh_*_*boi 2 types scala higher-kinded-types f-bounded-polymorphism

嗨,我想知道是否有人可以解释我在Spark代码库中找到的这个签名.它看起来像一个递归数据类型,它用于构建查询计划,所以它有意义.有没有人对此有详细的了解?

abstract class TreeNode[BaseType <: TreeNode[BaseType]] extends Product 
Run Code Online (Sandbox Code Playgroud)

Evg*_*eny 5

它是F-Bounded类型(或自递归类型).不是scala特定的,例如java中的等价物

public abstract class Enum<E extends Enum<E>> implements Comparable<E>
Run Code Online (Sandbox Code Playgroud)

你可以在这里这里阅读