Generics Java 8泛型输入类型函数
有人能解释一下Java8中使用的通用逻辑吗Generics Java 8泛型输入类型函数,generics,java-8,Generics,Java 8,有人能解释一下Java8中使用的通用逻辑吗 public static <T, K, U> Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper) { return toMap(k
public static <T, K, U>
Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends U> valueMapper) {
return toMap(keyMapper, valueMapper, throwingMerger(), HashMap::new);
}
公共静态
收集器toMap(功能有关PEC的一般信息
你必须这样考虑PEC:
生产者扩展
假设您有一个列表,这些函数使用T
s(因此?super T
)并生成键或值(?extends K
resp.?extends U
),这是“producer extends and consumer super”的典型示例…
List<Integer> ints = Arrays.asList(1,2,3);
List<? extends Number> nums = ints;
Number n = ints.get(0); // will be 1
nums.add(1L); // compiler error
List<Object> objs = new ArrayList<>();
List<? extends Number> nums = objs;
nums.add(1);
nums.add(2L);
nums.add(3F);
nums.add("4"); // compiler error
objs.add("4"); // works still
Object o = nums.get(0);
Object o = objs.get(0);
Function<Object, Long> objToLong = (Object o) -> 1L;
Function<? extends String, ? super Number> keyMapper = objToLong;