Java 中的高级泛型
2022-09-01 06:40:36
假设我有以下类:
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) }