【问题标题】:How list methods works in java [closed]列表方法在java中的工作方式[关闭]
【发布时间】:2012-12-24 11:52:35
【问题描述】:

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 或其他一些实现类。

【问题讨论】:

标签: java jakarta-ee


【解决方案1】:

java.util.ArrayListjava.util.LinkedListjava.util.VectorList接口的具体实现类。此类包含所有方法实现。你可以使用喜欢 -

List<String> list = new ArrayList<String>();

【讨论】:

    【解决方案2】:

    您将使用的唯一List 类型的对象将是实际实现List 的类型,例如ArrayListLinkedList 等。它们将提供实现。

    您不能实例化具有来自超类或接口的未实现抽象方法的类。

    【讨论】:

      【解决方案3】:

      Java provides 3 concrete classes which implement the list interface
      Vector
      ArrayList
      LinkedList
      

      【讨论】:

        【解决方案4】:

        “我怀疑如果 List 接口的方法在接口内部没有任何实现,它们是如何工作的”-(!!!!!!) 它将使用实现此接口的任何类实例的实现。所以取决于不同类实例中的实现。

        您是否期待任何类型的详细示例?

        【讨论】:

        • 在 GetBooks 中,您将值设置为列表,然后您必须初始化要设置的列表,然后它使用您用于初始化该列表的类的实现。如果没有初始化,就会出现空指针异常。这将是 ArrayList (在你的情况下是 ArrayList)实现。
        猜你喜欢
        • 2013-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-05
        相关资源
        最近更新 更多