我有一个实现类似接口的类。在这个类中,我需要重写compareTo方法,以便根据Long值对对象进行排序。
我不知道的是如何进行长类型的比较。在尝试检查值是否大于或小于另一个长值时,会出现错误。我知道龙是长的对象,但不知道如何比较两个龙的。
代码示例:
public int compareTo(MyEntry<K, V> object) {
if (this.value < object.value)
return -1;
if (this.value.equals(object.value))
return 0;
return 1;
}错误消息:
operator < cannot be applied to V,V
if (this.value < object.value)
^V,V很长,很长
发布于 2013-10-10 16:52:34
您的问题是,MyEntry<K, V>没有告诉编译器您要比较的对象类型。它不知道你在比较长值。最好的方法是不用担心您比较的对象类型(假设您的对象实现了可比较的),只需使用
return this.value.compareTo(object.value);但是,如果您出于某种原因想手动执行此操作,请执行以下操作:
public int compareTo(MyEntry<K, V> object) {
if ((Long) this.value < (Long) object.value)
return -1;
if (this.value.equals(object.value))
return 0;
return 1;
}发布于 2013-10-10 16:48:38
Long l1 = new Long(3);
Long l2 = new Long(2);
return l1.compareTo(l2);简单no?
发布于 2013-10-10 16:55:56
看起来会是这样的:
@Override
public int compareTo(MyEntry<K, V> object) {
if (object == null) {
throw new NullPointerException("Null parameter");
} else if (!this.getClass().equals(object.getClass())) {
throw new ClassCastException("Possible ClassLoader issue.");
} else {
return this.longValue.compareTo(object.longValue);
}
}巧合的是,我们最近用Java做了一个比较教程。也许它能帮到你。
https://stackoverflow.com/questions/19301547
复制相似问题