详细是这样的,我写了一个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, 而且都是用这个属性来进行比较的.
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, 而且都是用这个属性来进行比较的.
先做一个判断,
if((obj1 instanceof ClassA || obj1 instanceof ClassB || obj1 instanceof ClassC)
&& (obj2 instanceof ClassA || obj2 instanceof ClassB || obj2 instanceof ClassC)){
//强制类型转换
.....
// 比较操作
.....
}
以前用vb的时候,不用强制类型转换,直接用
obj1.myint = xxx
这样的语句,编译是可是通过的, 当实行时如果object没有myint属性则提示错误,如果有则可以顺利通过. 看来java没有类似的功能.