【发布时间】:2020-05-29 00:51:30
【问题描述】:
我对泛型方法的语法有点困惑。 阅读此post 后,我的理解是泛型方法应该这样声明:
public static <E> void printArray( E[] inputArray )
<E> 是一个占位符,告知 E 是泛型类型
那么为什么我会在javadoc 中找到这样的东西:
Stream<T> filter(Predicate<? super T> predicate)
没有占位符?我会期待
<T> Stream<T> filter(Predicate<? super T> predicate)
为什么
<R> Stream<R> map(Function<? super T,? extends R> mapper)
这次有一个占位符,但只用于 R 而不是 T。为什么?
【问题讨论】:
-
很可能,该方法位于具有类型参数
T的类中,例如interface Stream<T>。 docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html,所以该方法不接受新的类型参数,您使用的是外部范围中的一个