-11

重複の可能性:
Java でのリスト メソッドのしくみ

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"));
}

私の質問は、 getBooks() が Arraylist または他の実装クラスではなく List インターフェイスを返すため、インターフェイス List にある場合でも add メソッドが本を追加する方法です。

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 に答える