2015-07-21 33 views
0

products是不同类的实例的列表(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

也许你想实现一个“Comparator '('Comparator ')而不是'Comparator '?如果你还没有,你必须在'C'中声明'abstract'' getNumber()'方法。 – Holger

回答

0

您还没有表现出怎样的类型参数T定义,但如果没有上限,那么编译器不能假设有除了那些属于任何方法Object可拨打o1o2

如果你的不同类的实例都实现了定义getNumber的某个接口,那么你所要做的就是为该接口添加上界。

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

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

+0

我只需要对产品列表进行排序。但是,当我尝试比较产品时,他们可以是不同的类别。 –