我是Streams的新手,在查看某些方法时,我看到了以下return-Type:
<T> Stream<T>
我不了解“ <T> Stream<T>
”和“ Stream<T>
”之间的区别。额外的<T>
有什么作用?
谢谢你的帮助。我试图用Google搜索它。
答案 0 :(得分:1)
当我们使用Java处理泛型时,应该知道我们可以定义一个泛型类或接口,例如public interface Stream<T>
,因此任何即时方法都将使用T类型Stream<T> filter(
,但是如果您在在相同的类/接口上,您应该定义通用返回类型public static<T> Stream<T> empty()
,或者如果您想使用新的通用返回类型<R> Stream<R> map(
定义实例方法,因为您可以在非通用类中使用通用方法。
希望对您有所帮助。
欢呼
答案 1 :(得分:0)
不仅限于Stream
。
静态泛型方法需要与类的泛型声明分开的自己的泛型声明(public static <T>
)。
Stream的concat
方法是static
public static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b)
不是它的filter
方法。
Stream<T> filter(Predicate<? super T> predicate);