如何比较不相关类的字段?

时间:2015-07-21 18:05:03

标签: java sorting collections compare comparator

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

1 个答案:

答案 0 :(得分:0)

您尚未显示如何定义类型参数T,但如果没有上限,则编译器不能假设除了属于Object的方法之外还有任何方法致电o1o2

如果您的不同类的实例都实现了一些定义getNumber的接口,那么您所要做的就是添加该接口的上限。

public class YourClass<T extends HasNumber>  // Your names may vary

如果您的类没有实现该接口,那么您将需要创建这样的接口并让这些类实现该接口。