当它是接口时,如何直接使用方法返回的列表,方法的返回类型的确是布尔列表,我可以使用它,我认为不能直接使用接口而且必须使用非抽象类来实现它们,这实际上是我在所有地方看到的。
示例:
List<Boolean> booleanList = getBooleanList();
booleanList.get(0);
很抱歉,这个问题,我不了解这个概念,请投票删除,我将其删除。
答案 0 :(得分:3)
好吧,当您使用List类型的对象时,实际上是在使用实现。哪个执行?不知道,不在乎,但是您没有使用List对象,而是使用实现List接口的对象。
答案 1 :(得分:3)
您没有使用$3 ↓ $1
类型的object
,而是使用了List
类型的引用。无论如何,List
本身将是一个具体的实现。
object
某些IDE甚至可以向您显示实际的对象类型:
您可以将public List<String> getNames() {
final List<String> names = new ArrayList<>();
names.add("x");
names.add("y");
return names;
}
public void process() {
// In fact, there is an ArraysList
final List<String> names = getNames();
}
引用类型用作使用者,直到API返回List
类型为止,但是您需要了解应该在什么地方提供实现。
实际上,这也是一个可行的示例:
List
正如您所看到的,即使顶级接口也可以用作引用类型,因为public List<String> getNames() {
final List<String> names = new ArrayList<>();
names.add("x");
names.add("y");
return names;
}
public void process() {
// In fact, there is an ArraysList
final Iterable<String> names = getNames();
}
和List
都是ArrayList
。