在java.util.Collections
中,有一种方法:
public static <T> void fill(List<? super T> list, T obj)
使用第二个参数指定的对象填充第一个参数指定的List
。要调用此方法,可以编写一次,例如:
java.util.List<String> l;
//...
java.util.Collections.fill(l, "Hello");
为什么此方法未在java.util.AbstractList
中声明为实例方法?如果是,它可以作为实例方法,并且将它称为更方便:
java.util.List<String> l;
//...
l.fill("Hello");
答案 0 :(得分:4)
因为存在实现接口AbstractList
的其他类而不是List
。 Java库中的一个示例是CopyOnWriteArrayList
,任何人都可以自己实现。因此,通过接受List
,该方法更有用,因为它可以与任何这些类一起使用。
答案 1 :(得分:2)
还有其他列表java.util.AbstractList
。您甚至可以创建自己的全新List实现。
java.util.Collections.fill();
将适用于所有实施,而不仅仅是AbstactList
s。
答案 2 :(得分:1)
我认为可以使用java.util.List
接口的任何实现,而不仅仅是java.util.AbstractList
个孩子。
假设我有我的List实现,而不是从AbstractList派生,你的设计我必须自己实现这个方法。