TreeNode 子类如何/在哪里实现与产品相关的方法



我试图掌握

org.apache.spark.sql.catalyst.trees.TreeNode

类的Spark 2.0.0源代码,但发现产品部分很有趣。

定义开始于

abstract class TreeNode[BaseType <: TreeNode[BaseType]] extends Product {

然后我检查了trait Product,不知道TreeNode如何了解ProductArityProductElement trait Product需要哪种方法的统计数据。

我搜索了一段时间,发现有人指出 scala 编译器会找出case class的这些统计数据,但TreeNode不是案例类,我找不到一些协议或提示,Product可以从实现类中获得所需的数字,例如ProductArity返回。

那么有谁知道黑魔法的背后是什么?

TreeNode 不是一个案例类

但是每个扩展TreeNode的非抽象类都是。也可能有手动实现productArityproductElement的非案例类,但我认为 Spark 中没有任何类。

相关内容

  • 没有找到相关文章

最新更新