【发布时间】:2016-05-08 02:53:45
【问题描述】:
问题:如何在 scala 或 Java 中实现以下模式?
trait A
case class B[Base](...) extends A with Base
这在 C++ 中是允许的:
template <class Base>
class B : public Base, public A
这就是我想要这样做的原因:
我有两个抽象语法树:ComplexForm 和 SimpleForm
我有一个列表类型:case class L[T](list : List[T]) extends Complex Form with T
现在,L[SimpleForm] 应该是 extends SimpleForm with ComplexForm
但L[ComplexForm] 应该只有extend ComplexForm
我需要能够同时对所有L[T] 进行模式匹配以避免重复。
【问题讨论】:
-
@cchantep,我显然试过了:
case class O[T](list: List[T]) extends T,错误是“(1) T 没有构造函数;(2) 需要类类型但找到了 T” -
泛型的工作方式与 c++ 模板不同,请参阅 stackoverflow.com/questions/18347167/…
-
我不太清楚你想通过混合任意
T来实现什么。为什么包装器L[T]也需要是T?
标签: java scala generics inheritance