0

私はコレクションとジェネリックに取り組んでいます。私の課題では、人物オブジェクトをリンク リスト コレクションに格納する必要があります。次に、人の年齢と私が与えた値を比較する必要があります。しかし、リンクされたリストに格納されているオブジェクトの変数にアクセスできません。

これが私のコードです:

class person {
    int age;
    person(int a)
    {
       age = a;
    }
    public int getAge()
    {
         return age;
    }
}

class myList<E>
{
  LinkedList<E> list;
  myList()
  {
    list = new LinkedList<E>();
  }
  void addElement(Person p){}
  void removeElement(int index){}
  boolean compareAge(int age){
       for(E p : list){
             int a = p.getAge();
             if(a.equals(age))
             {
                return true;
             }
             else{
                return false;
             }
       }
  }

}

しかし、次のようなエラーが発生しています: エラー: シンボル p.getAge(); が見つかりません。^ 記号: メソッド get(int) 場所: 型 E の変数値 E は型変数: E extends Object 宣言されたクラス myList

4

4 に答える 4

1

あなたのコードは、「List任意のタイプを取り、それを呼び出しますE」と言っています。E次に、コードに仮定を強制していますが、これは機能しEませ

.を持つように、ジェネリック宣言を削除する必要がありますList<person>Listまたは、ホールドのみpersonまたはその子のみに制限できます。

class myList<E extends person>

ノート

Java 命名規則を使用してください。クラスは UpperCamelCase です。

于 2013-10-27T12:31:20.970 に答える
0

E はジェネリック型です。リストに格納したいタイプを事前に知っているので、宣言は次のようにする必要があります。

class myList
{
  LinkedList< person > list;

...
于 2013-10-27T12:29:55.413 に答える
0

以下を使用する必要があります。

class myList<E extends Person>

また、他のいくつかの問題を修正する必要があります (int では equals、クラス Person では 'p')。

于 2013-10-27T12:30:59.100 に答える
0

E の代わりに person が必要です。Linkedlist リスト...
しかし、クラス全体をジェネリックにすることも重要ではないと思います。
DOCUMENTATION をリストに追加

于 2013-10-27T12:32:29.003 に答える