【发布时间】:2013-10-27 21:45:45
【问题描述】:
我正在研究集合和泛型。在我的任务中,我必须将一个人对象存储到链表集合中。然后我必须将人的年龄与我给出的值进行比较。但我无法访问存储在链表中的对象变量。
这是我的代码:
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
【问题讨论】:
-
当您只使用
Person对象时,为什么要使类通用?它给出这个错误是因为getAge()没有在Object中定义,这是唯一可接受的类型,因为这是一个泛型。没有其他可用类型的信息 -
应该有 person 而不是 E 看到我的回答 ;-)
-
谢谢大家,现在它正在工作,我删除了泛型,即 E。我在 LinkedList 声明中用 Person 替换了 E。我真的再次感谢大家。
标签: java generics collections