Java通配符extends/super使用疑问:考试代码纠错困惑
Java通配符super/extends理解疑问
做旧考题时,题目要求找出以下代码中的2处错误,但我找出了3处:
考题原代码:
void removeNegatives(List<? super Number> list){ return list.stream() .filter(x -> x < 0) .foreach(System.out::println); }
题目要求该方法删除列表中的所有负数并打印所有元素。我的修改版本如下:
void removeNegatives(List<? extends Number> list){ return list.stream() .filter(x -> x >= 0) .forEach(System.out::println); }
我做了三处修改:把super改为extends、修正了filter的条件、改正了forEach的拼写(原代码是foreach)。但导师表示考题的方法头没有错误,我想知道自己对通配符extends/super的理解哪里有误。
内容的提问来源于stack exchange,提问作者mathsstudent
相关产品推荐
相关产品推荐

