我正在创建一个FriendList,它扩展了ArrayList,并填充了一个Friend对象。然而,当我尝试访问朋友通常可用的方法时,编译器说它无法解析该方法-在本例中为compareTo(朋友)。
FriendList类:
public class FriendList<Friend> extends ArrayList<Friend> {
private boolean isAdded;
public FriendList() {
isAdded = false;
}
public void alphabetAdd(Friend friend) {
if (this.isEmpty()) {
add(friend);
return;
}
int index = 0;
// add friends alphabetically
while (!isAdded) {
Friend f = this.get(index+1);
if (f.compareTo(friend) < 0) {
index++;
} else {
this.add(index, friend);
isAdded = true;
}
}
}
}Friend类:
public class Friend implements Comparable<Friend> {
// constructors and other methods work fine - just need to see compareTo
// @Override
public int compareTo(@NonNull Friend o) {
String name1 = getUserFirstName() + getUserLastName();
Friend f;
if (o instanceof Friend) {
f = (Friend) o;
String name2 = f.getUserFirstName() + f.getUserLastName();
if (name1.compareTo(name2) < 0)
return -1;
else if (name1.compareTo(name2) > 0)
return 1;
}
return 0;
}
}发布于 2018-02-25 09:51:13
问题出在FriendList<Friend>中。这被视为像FriendList<T>这样的泛型类的声明,并且Friend不是一个实际的类型,而是一个别名,这就是为什么只有在Object中声明的方法才可用。将类的声明更改为public class FriendList extends ArrayList<Friend>
https://stackoverflow.com/questions/48969296
复制相似问题