无法解析方法 "compareTo(Friend)"
Cannot resolve method "compareTo(Friend)"
我正在创建一个 FriendList,它扩展了 ArrayList 并填充了一个 Friend 对象。但是,当我尝试访问 Friend 通常可用的方法时,编译器说它无法解析该方法 - 在本例中为 compareTo(Friend).
好友列表class:
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;
}
}
}
}
朋友class:
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;
}
}
问题在 FriendList<Friend>
。这被视为通用 class 的声明,如 FriendList<T>
和 Friend
不是实际类型而是别名,这就是为什么只有 Object
中声明的方法可用。
将 class 的声明更改为
public class FriendList extends ArrayList<Friend>
我正在创建一个 FriendList,它扩展了 ArrayList 并填充了一个 Friend 对象。但是,当我尝试访问 Friend 通常可用的方法时,编译器说它无法解析该方法 - 在本例中为 compareTo(Friend).
好友列表class:
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;
}
}
}
}
朋友class:
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;
}
}
问题在 FriendList<Friend>
。这被视为通用 class 的声明,如 FriendList<T>
和 Friend
不是实际类型而是别名,这就是为什么只有 Object
中声明的方法可用。
将 class 的声明更改为
public class FriendList extends ArrayList<Friend>