为Framework扩展编写一些类,我有以下代码:
public class TimeImpl implements Time, Comparable<TimeImpl>, Serializable
{
...
public int compareTo(TimeImpl other)
{
if (other == null)
throw new ClassCastException("null");
return Long.valueOf(toSeconds()).compareTo(other.toSeconds());
}
}
如果你问我,非常简单的实施。我的问题是:据我所知,Comparable接口的javadoc对空参数没有任何说明。我应该费心去检查吗?我是否应该更改抛出的异常类型,在这种情况下我应该返回其他值吗?其他人如何处理此事?
答案 0 :(得分:3)
我更倾向于NullPointerException
而不是ClassCastException
。
此约定也遵循JDK实现。
答案 1 :(得分:3)
实际上,Comparable
接口会说出有关处理null
参数的内容。
请注意,null不是任何类的实例,而e.compareTo(null) 即使e.equals(null)返回,也应抛出NullPointerException 假的。
答案 2 :(得分:1)
下面的代码是来自java的Integer的compareTo方法:
public int compareTo(Integer anotherInteger)
{
int thisVal = this.value;
int anotherVal = anotherInteger.value;
return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}
为什么不以Integer的方式实现compareTo方法。