详细是这样的,我写了一个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, 而且都是用这个属性来进行比较的.

解决方案 »

  1.   

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

  2.   

    谢谢楼上的,我先试试.
    以前用vb的时候,不用强制类型转换,直接用 
    obj1.myint = xxx
    这样的语句,编译是可是通过的, 当实行时如果object没有myint属性则提示错误,如果有则可以顺利通过. 看来java没有类似的功能.
      

  3.   

    1楼的方法只能处理已知的ClassA, ClassB,ClassC 三个类, 我的理想情况是,不管它来自什么类,如果这个类的实例有一个myint属性, 则可以用我的这个MyComparator来进行比较,就是说将来可能会有ClassD,ClassE同样带有myint属性,要用上MyComparator来比较, 我希望这时MyComparator不用做任何修改.
      

  4.   

    实现同一个接口,Comparator中使用这个接口进行比较