【发布时间】:2014-08-22 05:57:51
【问题描述】:
有什么方法可以在调用站点返回通用响应的 java 中表达 f 绑定类型?
interface Functor<T extends Functor<T>>
public <B> T<B> map(Function<A, B> fn); // won't compile because types don't match
如果类型从不改变,我可以使用 f-bound 类型,但在 map 的情况下,我需要一个新类型。有没有办法用java来表达?
即使我知道 javac 不支持更高种类的类型,我真正在寻找的是任何可以获得类似更高种类的东西的方法。
假设我们有一个List<A>,并希望这个接口返回一个List<B>。但是不想让这个接口知道List的任何信息。
【问题讨论】:
-
interface Functor<T extends Functor<T>, A, B>? -
那不会让我在地图中返回
T<B>。我当前的类型是 T,我需要返回一个 T。 -
那么
A是从哪里来的?它没有在任何地方正式定义。 -
这就是我想要弄清楚的。也许我正在从更高阶类型的角度来看待这个问题,更新了我的评论以更好地反映这一点。
-
您能添加一个您正在考虑的用法示例吗?你会用什么调用 Functor.map,你希望返回什么?
标签: java generics functor bounded-wildcard