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 扩展类 myList 中声明的 Object

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 上等于,在 Person 类上为 'p')。

于 2013-10-27T12:30:59.100 回答
0

而不是 E 你应该有人。Linkedlist list ...
但我也认为整个类通用并不重要。
文件清单

于 2013-10-27T12:32:29.003 回答