-11

可能重复:
列表方法在 java 中的工作原理

List是java中的一个接口。它有一些方法。通常,接口是方法原型的规范。即接口仅由方法签名组成,接口中的该方法没有实现。

我怀疑如果 List 接口的方法在接口内没有任何实现,它们是如何工作的。

假设我有一个类 Book,它具有 name 属性、setter、getter 方法。我还有另一堂像这样的getBooks。

public class GetBooks{
List<Book> list;
public List<Book> getBooks(){
return list;
}
//setter method..
}

我在运行时通过其他一些类将书籍发送到 set 方法。

我有另一堂这样的UseBooks。

public class UseBooks{
.....
....
List<Book> list = new GetBooks().getBooks();
list.add(new Book("aaa"));
}

我的问题是 add 方法如何添加书籍,即使它在接口 List 中,因为我的 getBooks() 返回 List 接口而不是 Arraylist 或其他一些实现类。

4

2 回答 2

2
List<Book> list

这里的 list 是对对象的引用,而不是对象本身。当你在这个引用上调用接口方法时,你实际上是在调用这个引用指向的某个具体类的重写方法。

为了显示

List<Book> list = new List<Book>(); //Illegal
List<Book> list = new ArrayList<Book>(); //legal ArrayList is a concrete implementation of list.

这就是接口的力量,我可以用这个参考做一些事情,而不用担心它是如何工作的或它是如何实现的。

于 2013-01-10T07:05:33.840 回答
0

是的,您需要创建一个图书列表对象,如下所示

//list as object
List<Book> list = new ArrayList<Book>();

//get your data

List<Book> temp = getBooks();

//now add another List of records to list

list.addAll(temp);

注意:= 正如您所说,您将通过 getBooks() 方法获取图书列表,所以我在示例中进行了解释

于 2013-01-10T07:47:38.743 回答