我正在努力让一个接口实现在另一个类中被继承:
我有一个需要实现compareTo方法的通用类,它称为GenericList并且实现如下:
public class GenericList<T extends Comparable<T>> {
private T[] items;
private int count;
public GenericList() {
items = (T[]) new Comparable[10];
count = 0;
}
}
我有一个User类,实现了compareTo方法:
public class User implements Comparable<User> {
private String email;
public User(String email) {
this.email = email;
}
@Override
public int compareTo(User o) {
return (email.compareTo(o.email));
}
}
我可以轻松创建一个用户的通用列表:
var users = new GenericList<User>();
如果我创建了一个继承自User的类,并尝试创建该类型的通用列表,就会出现错误。我已经创建了一个名为Instructor的类:
public class Instructor extends User{
public Instructor(String email){
super(email);
}
}
如果我使用该类创建一个通用列表:
var instructors = new GenericList<Instructor>();
我收到了一个错误:
Type parameter 'com.martin.Instructor' is not within its bound; should implement 'java.lang.Comparable<com.martin.Instructor>'
难道不应该使用继承的 compareTo 方法吗?
我尝试了很多不同的方法,但是我无法让 GenericList 使用像这样的继承类。
谢谢
compareTo(User)
方法。接口要求实现compareTo(Instructor)
方法。 - Andy ThomasInstructor
只是委托给其超类,它也需要实现int compareTo(Instructor)
。 - Jim Garrisonpublic class GenericList<T extends Comparable<? super T>> { private T[] items;
- Iłya Bursovpublic class GenericList<T extends Comparable<? super T>>
使其正常工作。 - Martin Williams