import java.awt.Rectangle;
import java.util.Comparator;
public class RectangleComparator implements Comparator
{
public int compare(Object object1, Object object2)
{
Rectangle rec1 = (Rectangle) object1;
Rectangle rec2 = (Rectangle) object2;
return rec1.getWidth().compareTo(rec2.getWidth());
}
}
由于某种原因,我得到的错误是双倍无法解除引用。任何人都可以帮我找出原因吗?
答案 0 :(得分:5)
比较两个double
原语:
Java旧学校:
return new Double(rec1.getWidth()).compareTo(new Double(rec2.getWidth());
Java 1.4以后:
return Double.compare(rec1.getWidth(), rec2.getWidth());
答案 1 :(得分:4)
对于为什么会发生这种情况,“火箭男孩”是正确的。
考虑使用像这样的双包装类
new Double(rec1.getWidth()).compareTo(rec2.getWidth());
只需将第一个值转换为包装器Double,第二个值将自动装箱。
答案 2 :(得分:3)
我认为您的Rectangle.getWidth()
会返回double
。它不是像Double这样的包装器,因此不能使用点运算符。
原来是:
Double getWidth()
代替double getWidth()
然后rec1.getWidth().compareTo(rec2.getWidth());
才有效。