gpt4 book ai didi

java - Java 中的参数化类型 (GADT)

转载 作者:行者123 更新时间:2023-12-01 05:32:10 25 4
gpt4 key购买 nike

我需要 Java 中的 GADT,例如

interface Action<C, O> {
Collection<O> doAction(C<O> predicate)
}

这样我就可以轻松地声明类

class Selector<T> {
...
}

然后将其与接受选择器实例的操作的实现一起使用。并且还实现了接受 Predicate 的 Action - 但参数类型必须与集合的返回类型匹配。

主要思想是让一种类型依赖于另一种类型。这在普通的旧 Java 6 中可能吗?

最佳答案

这不起作用,因为没有任何强制措施 CAction<C, O>本身就是一个参数化类型。您可以声明 Action<String, Object>例如——那么predicate是什么?应该是?不存在String<Object>这样的东西.

在不了解更多细节的情况下,在我看来,您想要的是更具体的东西,例如,定义 Predicate<T>接口(interface):

interface Predicate<T> {
}

interface Action<C extends Predicate<O>, O> {
Collection<O> doAction(C predicate);
}

class Selector<T> implements Predicate<T> {
}

关于java - Java 中的参数化类型 (GADT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8805870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com