Understand declaration of a terminal operation method -
this question has answer here:
usually, method's declaration shows return type, method full path, , parameters. when @ method java.util.stream.stream.collect
confused.
it seems method has two return types:
<list<integer>, object> list<integer> java.util.stream.stream.collect(collector<? super integer, object, list<integer>> collector)
i understand real return type list<integer>
, <list<integer>, object>
mean? why 1 space before list<integer>
, why key(if map?) same real return type?
have @ declaration of method:
public interface stream<t> extends basestream<t, stream<t>> { ... /* ... * @param <r> type of result * @param <a> intermediate accumulation type of {@code collector} * ... */ <r, a> r collect(collector<? super t, a, r> collector); ... }
as nathan pointed out in comments, <r, a>
denotes generic type parameters. these inferred java compiler long unambiguous. in case r
inferred list<integer>
, a
object
. can read here generic methods.
Comments
Post a Comment