【发布时间】:2012-12-24 12:24:32
【问题描述】:
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 或其他一些实现类。
【问题讨论】:
-
您将始终拥有 List-Methods 的实现。
-
List<Book> list = new GetBooks().getBooks();不会编译。 -
List 是一个接口,您将创建具有 ArrayList 等实现的新对象,而 ArrayList 是一个扩展 List 接口的类,它确实具有接口方法的完整实现。
-
您已经问过这个问题,并得到了答案。你真的真的需要阅读 oracle 提供的教程或购买一本好的 Java 初学者书籍。
-
@Karthik 代码(想法)编译正确,但总是会得到 NPE。
标签: java jakarta-ee