Java 流图签名

Java 流图签名,java,generics,java-stream,Java,Generics,Java Stream,为什么会出现以下情况 <R> Stream<R> map(Function<? super T,? extends R> mapper) 不需要像中那样定义T <R,T> Stream<R> map(Function<? super T,? extends R> mapper) 因为流在给定类型的元素上迭代,所以T是已知的,并且对类中的所有实例级方法和非静态方法可见。映射函数的目的是返回一个截取基流中元素的流,并在继

为什么会出现以下情况

 <R> Stream<R> map(Function<? super T,? extends R> mapper)
不需要像中那样定义T

 <R,T> Stream<R> map(Function<? super T,? extends R> mapper)
因为流在给定类型的元素上迭代,所以T是已知的,并且对类中的所有实例级方法和非静态方法可见。映射函数的目的是返回一个截取基流中元素的流,并在继续之前应用该函数,因此遇到的所有元素现在都将是R类型

因为原始流迭代T类型的元素,所以传递一个映射函数是无效的,如果它是泛型方法而不是泛型类,则该映射函数期望输入T2。函数必须期望T类型的输入或T超类。但是,输出不需要限制。因此,提供的函数仅取决于当前流的类型

<NEW_STREAM_TYPE> Stream<NEW_STREAM_TYPE> map(Function<? super CURRENT_STREAM_TYPE, ? extends NEW_STREAM_TYPE> modifier);
因为流在给定类型的元素上迭代,所以T是已知的,并且对类中的所有实例级方法和非静态方法可见。映射函数的目的是返回一个截取基流中元素的流,并在继续之前应用该函数,因此遇到的所有元素现在都将是R类型

因为原始流迭代T类型的元素,所以传递一个映射函数是无效的,如果它是泛型方法而不是泛型类,则该映射函数期望输入T2。函数必须期望T类型的输入或T超类。但是,输出不需要限制。因此,提供的函数仅取决于当前流的类型

<NEW_STREAM_TYPE> Stream<NEW_STREAM_TYPE> map(Function<? super CURRENT_STREAM_TYPE, ? extends NEW_STREAM_TYPE> modifier);

它不是在类级别上定义的吗?t是在类级别上定义的,就像被接受的答案显示的在接口级别上定义的类流:接口流还是类级别?哪个类实现了流接口?它不是在类级别上定义的吗?t是在类级别上定义的,就像被接受的答案显示的在接口级别上定义的类流一样:接口流还是类级别?哪个类实现了流接口?