products
是不同类的实例列表(A类,B类,由抽象类C扩展)
这两个类都有方法getNumber()
public void sortByNumber() {
Collections.sort(products, new Comparator<T>() {
public int compare(T o1, T o2) {
return ((T) o1).getNumber().compareTo(((T o2).getNumber());
}
});
}
我需要访问o1.getNumber()
和o2.getNumber()
方法来比较字段
有错误:
The method getNumber() is undefined for the type T
答案 0 :(得分:0)
您尚未显示如何定义类型参数T
,但如果没有上限,则编译器不能假设除了属于Object
的方法之外还有任何方法致电o1
和o2
。
如果您的不同类的实例都实现了一些定义getNumber
的接口,那么您所要做的就是添加该接口的上限。
public class YourClass<T extends HasNumber> // Your names may vary
如果您的类没有实现该接口,那么您将需要创建这样的接口并让这些类实现该接口。