今天代码用到对象的比较,当时用的两个Object类型的变量a和b,然后if(a>b),直接编译错误:The operator > is undefined for the argument type(s) java.lang.Object, java.lang.Object。原来算术运算符只能用于基本的数据类型,引用类型包括Integer和Float都不能用该操作符。这时有两种处理方法:
1、强制类型转换,代码如下:
2、实现comparable或者comparator接口,这里以comparable为例。需要注意的是,实现这个接口以后仍然不能用算术运算符,一般用于集合类的sort()方法排序,当然也可以直接引用该方法。这里直接引用该方法。对于comparable的抽象方法这里仍然采用强制类型转换的方法实现。示例如下
public class Test implements Comparable<object>
{
Object obj;
Test(Object o)
{
this.obj=o;
}
public int compareTo(Object o)
{
return (int)this.obj-(int)o;
}
public static void main(String[] args)
{
Test t=new Test(3);
Object a=1;
if(t.compareTo(a)>0)
System.out.println("这里等价于 :obj>a");
}
}