1

それで、私が本を説明するクラスを持っているとしましょう

   public class Book {
     String name;
     int pages;
     String auother;
     boolean available;
     String rentername;
  }

これで、実行時に取得/追加/削除したい不明な数の本を含む配列リストを設定しました。問題は、配列リスト内の特定の本にインデックスでアクセスしようとすると、エラーが発生することです。

enter code here

ArrayList Books = new ArrayList();
Book bk1 = new Book();
Books.add(bk1);
System.out.println(Books[0]. --->>> won't give me accesses to the 'Book' class variables (name, pages...)

では、どうすればクラス変数に到達できますか?ありがとう。

4

3 に答える 3

12

ArrayListjava.util.List動的配列に裏打ちされたコレクションの実装です。

これは3つのことを意味します。

まず、要素のサイズ変更、割り当て、または配列への対処について心配する必要はありませんArrayList。自動的に処理されます。

第二に、aを必要とするメソッドは、コードを分離Listする実装を気にしません(代わりに渡すことができます)(つまり、インターフェイスLinkedListを介して行われる契約により、依存する人に悪影響を与えることなく実装を変更できます)List

第3に、のコンテンツを操作するには、List1つ以上のインターフェイスアクセスメソッドを使用する必要があります。

についてはすでに知っていaddますが、オブジェクトを取得するには、どちらを使用する必要がgetあります。

このリストの指定された位置にある要素を返します

あなたは下記にもご興味がおありかもしれません

もちろん、他の方法もありますが、これらはすぐに役立ちます。

コレクショントレイルも読んでもらいたい

更新された例

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {

        List<Book> listOfBooks = new ArrayList<Book>();
        Book bk1 = new Book();
        listOfBooks.add(bk1);

        System.out.println("           bk1 = " + bk1);
        System.out.println("listOfBooks(0) = " + listOfBooks.get(0));

    }

    public class Book {

        String name;
        int pages;
        String auother;
        boolean available;
        String rentername;

        @Override
        public String toString() {
            return "Book: name = " + name + "; pages = " + pages + "; available = " + available + "; rentername = " + rentername + "; hashCode = " + hashCode();
        }

    }
}

どの出力

           bk1 = Book: name = null; pages = 0; available = false; rentername = null; hashCode = 1137551390
listOfBooks(0) = Book: name = null; pages = 0; available = false; rentername = null; hashCode = 1137551390
于 2012-10-09T22:06:55.160 に答える
6

get(int index)のメソッドを使用してList、必要なエントリを取得します。

System.out.println(Books.get(0));

List配列に使用される表記でのエントリにアクセスすることはできません。

ところで: Javaの命名規則に固執してください

于 2012-10-09T21:56:45.677 に答える
2

フィールドにアクセスし、必要なブックインスタンスにアクセスするには、パブリックセッターとゲッターメソッドを作成する必要があります。

books.get(index)
于 2012-10-09T21:56:44.823 に答える