日期:2014-05-20  浏览次数:20682 次

请问能否实现多个类都能使用同一个MyComparator类来实现比较大小.
详细是这样的,我写了一个MyComparator类实现Comparator接口
public   class   MyComparator   implements   Comparator{
                public   int   compare(Object   obj1,   Object   obj2){
                                              //我知道obj1   与   obj2   可能属于ClassA,   ClassB,ClassC   类.  
                                              //但是A,B,C   三个类都肯定存在一个   myint   属性,我用以下方法编译不通过.
                                if   (obj1.myint   >   obj2.myint   )   {
                                                            return   1
                                  }
                                  ...  
                                                               
                }
}
问能否实现ClassA,   ClassB,ClassC   都能使用同一个MyComparator类,来实现比较.  
前提:   ClassA,   ClassB,ClassC   三个类都具体   同一个属性myint,   而且都是用这个属性来进行比较的.




------解决方案--------------------
如果你要实现Comparator接口,compare这个方法的参数你是肯定不能变的。只能在方法体里做。
先做一个判断,
if((obj1 instanceof ClassA || obj1 instanceof ClassB || obj1 instanceof ClassC)
&& (obj2 instanceof ClassA || obj2 instanceof ClassB || obj2 instanceof ClassC)){
//强制类型转换
.....
// 比较操作
.....
}

------解决方案--------------------
实现同一个接口,Comparator中使用这个接口进行比较