假设我有以下课程:
public class FixExpr {
Expr<FixExpr> in;
}
现在我想介绍一个通用论点,对 Expr 的使用进行抽象:
public class Fix<F> {
F<Fix<F>> in;
}
但 Eclipse 不喜欢这样:
F 类型不是通用的;它不能用参数 <Fix<F>> 参数化
这是可能的,还是我忽略了导致这个特定实例中断的东西?
一些背景信息:在 Haskell 中,这是编写泛型函数的常用方法;我正在尝试将其移植到 Java。上例中的类型参数 F 具有种类 * -> * 而不是通常的种类 *。在 Haskell 中,它看起来像这样:
newtype Fix f = In { out :: f (Fix f) }