List是java中的一个接口。它有一些方法。通常,接口是方法原型的规范。即接口由方法签名组成,只有接口中的方法不存在实现。
我怀疑如果List接口的方法在接口中没有任何实现,它们如何工作。
假设我有一个具有name属性,setter,getter方法的类Book。我还有另一个类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或其他一些实现类。
答案 0 :(得分:2)
List<Book> list
此处列表是对象的引用,而不是对象本身。在此引用上调用接口方法时,实际上是调用此引用指向的某些具体类的重写方法。
说明
List<Book> list = new List<Book>(); //Illegal
List<Book> list = new ArrayList<Book>(); //legal ArrayList is a concrete implementation of list.
这就是接口的强大功能,我可以用这个参考做些什么而不用担心它是如何工作的或如何实现它。
答案 1 :(得分: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()方法得到Book of Book,所以我在例子中解释