廖老师,Stream类中的map方法的mapper中的泛型参数也是PESC原则吗?怎么理解起来有点费劲
Topic source自己动手实践了一下,发现这个本质上也只是做了个类型检查。跟c#的泛型容器真泛型不一样,所以java才衍生出Type和ParameterizedType。map的参数符合Function<? super T, ? extends R> mapper;T是Integer类型 ,所以是Integer的父类可以,Number可以,BigInteger不可以。
Integer[] nums = {1, 2, 3}; List<Float> list = Arrays.asList(nums).stream().map(Number::floatValue).collect(Collectors.toList()); List<Float> list1 = Arrays.asList(nums).stream().map(Integer::floatValue).collect(Collectors.toList()); ArrayList<Number> list2 =(ArrayList) Arrays.asList(nums).stream().map(Integer::floatValue).collect(Collectors.toList()); // Compile error// List<Float> list3 = Arrays.asList(nums).stream().map(BigInteger::floatValue).collect(Collectors.toList());
- 1
smilezmhFocus