无法解析方法 'intValue()'

Cannot resolve method 'intValue()'

我正在尝试为私有双变量创建一个 get 方法。

写的时候

public class {

  private double x = 4.12;

  public int get(){
    double temp = new Double(this.x);
    return temp.intValue();
  }

}

IDE 建议删除 Double Unnecessary boxing 'new Double(this.x)' 并且它不识别 intValue() 方法。写的时候也是一样:

return this.x.intValue();

基元没有方法,创建 Double 的新实例只是为了立即再次展开它是没有意义的。

改为:

return (int) this.x;

您似乎将温度存储在原始双精度数中,但您需要使用 class:

Double temp = new Double(this.x);

此外,不要使用新的 Double(...)。使用 Double.valueOf(...):

Double temp = Double.valueOf(this.x);

发生这种情况是因为您将其分配给原始双精度类型。 试试这个 -

Double temp = new Double(this.x);
return temp.intValue();

您的变量 temp 被声明为 double 而不是 Double 并且 new Double(this.x) 创建了一个 Double 并将其拆箱为 double。这就是编译器抱怨 Unnecessary boxing....

的原因

您可以简单地使用 return new Double(this.x).intValue();

doubleDouble是不同的。 double 是原始类型,没有附加方法。 Double 是 class 附有方法。要在它们之间进行转换,请使用类型转换。

public int get(){
    return  ((Double) x).intValue();
}

每个原始类型(intfloatchar 等)都有一个 包装器 class。它们通常具有相同的名称,但首字母大写。编译器通常会自动在原语和包装器之间进行转换,但有时我们必须通过显式类型转换来帮助它。