我需要在 Java 中有这样的 GADT,比如
interface Action<C, O> {
Collection<O> doAction(C<O> predicate)
}
所以我可以轻松地声明类
class Selector<T> {
...
}
然后将其与接受 Selector 实例的 Action 的实现一起使用。并且具有接受 Predicate 的 Action 的实现 - 但参数的类型必须与集合的返回类型匹配。
主要思想是让一种类型依赖于另一种类型。这在普通的旧 Java 6 中可能吗?