双倍不能被解除引用......?

时间:2013-09-09 04:50:05

标签: java

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());
    }
}

由于某种原因,我得到的错误是双倍无法解除引用。任何人都可以帮我找出原因吗?

3 个答案:

答案 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());才有效。

How to compare doubles in Java?