【发布时间】:2014-06-01 00:28:57
【问题描述】:
我的课程 ListFromFile<T> 扩展了 ArrayList<T> 有问题。
在那个类中,我想创建一个方法,通过它的id 属性找到一个元素并返回它。
T 可以是 Student、Teacher 等类的对象。所有这些类都有一个 equals 方法来测试 id。
我的问题是我不能使用 equals 方法来测试 ListFromFile 中的 id。
这是我的代码:
public class ListFromFile<T> extends ArrayList<T> implements Serializable {
public T getElement(int id) {
for ( T o : this ) {
if ( o.equals((int)id) ) {
return o;
}
}
return null;
}
}
即使我在 equals 方法中指定我使用的是 int 的 id,getElement() 也找不到元素 ...
经过一番搜索,似乎我必须通过 Student、Teacher 等来扩展 T,但是如何扩展多个类?
谢谢
【问题讨论】:
-
1) 您可能想使用bounded type of generic。 2) 所有Java 类都有一个
public boolean equals(Object o)方法,该方法继承自Object 类,即所有类的父类。我还是不明白为什么不能调用这个方法。 -
你的
Student、Teacher等等都有getId()之类的方法吗?如果不是,那么说特定的Student“等于”特定的整数是什么意思? -
@HovercraftFullOfEels 是的,equals(Object o) 有效,但我只想检查 id 而不是所有属性。 @DavidWallace 是的,这些类有一个方法
getId()。equals允许我访问列表中具有特定 id 的元素。 -
您正在将一个不是整数的对象与一个整数进行比较。他们永远不会平等。