为什么返回类型是java8';s Function.identity()是否与其输入类型相同?

为什么返回类型是java8';s Function.identity()是否与其输入类型相同?,java,generics,java-8,Java,Generics,Java 8,Function.identity()的原始实现如下所示: 静态函数标识(){ 返回t->t; } 现在我的问题是,为什么作者没有这样做: 静态函数标识(){ 返回t->t; } 有什么具体的原因吗?还是仅仅因为方法名(identity)的缘故?或者他们只是没有这么做?有了这个额外的类型参数,您可以为这个函数添加另一个用例;它不仅可以作为身份函数,还可以作为扩大的转换函数 但通常情况下,你不需要这个。主要目的是将此预定义函数作为参数传递,其中该参数指定一个函数。如果特定的API遵循该规则,则

Function.identity()的原始实现如下所示:

静态函数标识(){
返回t->t;
}
现在我的问题是,为什么作者没有这样做:

静态函数标识(){
返回t->t;
}

有什么具体的原因吗?还是仅仅因为方法名(
identity
)的缘故?或者他们只是没有这么做?

有了这个额外的类型参数,您可以为这个函数添加另一个用例;它不仅可以作为身份函数,还可以作为扩大的转换函数

但通常情况下,你不需要这个。主要目的是将此预定义函数作为参数传递,其中该参数指定一个
函数
。如果特定的API遵循该规则,则即使您希望进行加宽转换,例如

Optional<String> o = Optional.of("text");
Optional<CharSequence> cs = o.map(Function.identity());

List<String> l = Arrays.asList("foo", "bar", "baz");
Map<Serializable, List<String>> map1
    = l.stream().collect(Collectors.groupingBy(Function.identity()));
Optional o=Optional.of(“文本”);
可选cs=o.map(Function.identity());
listl=Arrays.asList(“foo”、“bar”、“baz”);
地图1
=l.stream().collect(Collectors.groupingBy(Function.identity());
与现有定义配合良好

另一方面,当需要显式类型时,使用两个类型参数会使用法复杂化,因为这样,您就不能只编写
Function.identity()
,而必须编写

Function.identity()
,这不仅更加冗长,而且对于identity函数来说确实看起来很奇怪。

使用这个额外的类型参数,您可以为这个函数添加另一个用例;它不仅可以作为身份函数,还可以作为扩大的转换函数

但通常情况下,你不需要这个。主要目的是将此预定义函数作为参数传递,其中该参数指定一个
函数
。如果特定的API遵循该规则,则即使您希望进行加宽转换,例如

Optional<String> o = Optional.of("text");
Optional<CharSequence> cs = o.map(Function.identity());

List<String> l = Arrays.asList("foo", "bar", "baz");
Map<Serializable, List<String>> map1
    = l.stream().collect(Collectors.groupingBy(Function.identity()));
Optional o=Optional.of(“文本”);
可选cs=o.map(Function.identity());
listl=Arrays.asList(“foo”、“bar”、“baz”);
地图1
=l.stream().collect(Collectors.groupingBy(Function.identity());
与现有定义配合良好

另一方面,当需要显式类型时,使用两个类型参数会使用法复杂化,因为这样,您就不能只编写
Function.identity()
,而必须编写

Function.identity()
这不仅更加冗长,而且对于一个identity函数来说确实看起来很奇怪。

因为那不再是一个identity了?你认为,你会需要这个吗?我不是这方面的专家,但你如何断言这两个东西在这个上下文中是相同的?只有一次。我是库里奥斯,他们为什么不这么做。就这样。因为那不再是一个身份了?你认为你需要多久?我不是这方面的专家,但你如何断言这两件事在这个上下文中是相同的?只有一次。我是库里奥斯,他们为什么不这么做。就这样。