相关疑难解决方法(0)

Java中更高级的泛型

假设我有以下课程:

public class FixExpr {
  Expr<FixExpr> in;
}
Run Code Online (Sandbox Code Playgroud)

现在我想介绍一个泛型参数,抽象使用Expr:

public class Fix<F> {
  F<Fix<F>> in;
}
Run Code Online (Sandbox Code Playgroud)

但Eclipse并不喜欢这样:

F型不是通用的; 它不能用参数<Fix <F >>进行参数化

这是可能的还是我忽略了导致这个特定实例破坏的东西?

一些背景信息:在Haskell中,这是编写泛型函数的常用方法; 我正在尝试将其移植到Java.上例中的类型参数F具有类型* - >*而不是通常的类型*.在Haskell中它看起来像这样:

newtype Fix f = In { out :: f (Fix f) }
Run Code Online (Sandbox Code Playgroud)

java generics polymorphism haskell higher-kinded-types

31
推荐指数
3
解决办法
4951
查看次数