"double Cannot be Dereferenced" toString() - 这种没有错误的替代形式是否意味着同一件事?

"double Cannot be Dereferenced" toString() - does this alternative form without errors mean the same thing?

在下面的代码片段中,int returns 正确,但是当我尝试用双 NetBeans 8.0.2 做同样的事情时,抱怨 "double Cannot be Dereferenced"

未注释掉的变量有效。被注释掉的变量是double,不起作用。

@Override
public String toString() 
{
    return "[" + getAccountNumber() + "], " +
            super.toString() + ", " +
            owner.toString() 
          // Error: "Double Cannot be Dereferenced" why?

          //  + ", " + currentBalance.toString()
          //  + ", " + interestRate.toString()
            ;
}

当我像这样重写它时,NetBeans 不会给我一个错误,但这对于双精度来说实际上是一样的吗?

@Override
public String toString() 
{
    return "[" + getAccountNumber() + "], " +
            super.toString() + ", " +
            owner.toString() 
          // Error: "Double Cannot be Dereferenced"

          //  + ", " + currentBalance.toString()
          //  + ", " + interestRate.toString()

          // The following seems to work instead:

            + ", " + Double.toString(currentBalance)
            + ", " + Double.toString(interestRate)
            ;
}

如果是这样,那就太好了。没有错误。如果不是,我该怎么做才能确保 double returns 的值像 int 一样传递给 String?

更新: 从我收到的答案来看,我使用的第二种方法似乎有效,但以下方法同样有效:

 @Override
public String toString() 
{
    return "[" + getAccountNumber() + "], " +
    super.toString() + ", " +
    owner + ", " +
    currentBalance + ", " +
    interestRate;
}

我打赌它不是在说 "Double Cannot be Dereferenced";它很可能是在说“double 无法取消引用”。 (注意 Double 和原始类型 double 之间的区别,这意味着包装器 class java.lang.Double

你没有说明 currentBalance 是什么,但它可能是原始类型 double 的变量。您不能调用基本类型的方法,这就是您收到错误消息的原因。

在进行字符串连接时,您不需要显式调用变量 toString()。试试这个:

@Override
public String toString() 
{
    return "[" + getAccountNumber() + "], " +
        super.toString() + ", " +
        owner + ", " +
        currentBalance + ", " +
        interestRate;
}

Primitive types没有方法,他们不是objects。您不能在 primitives.

上调用方法

您得到的错误是:

double cannot be dereferenced

而不是:

Double cannot be dereferenced

double 是一个 primitiveDouble 是原语 double 的包装器,它是一个 Object.

您不能在 double 上调用方法,但可以在 Double.

上调用方法

所以Double.toString(currentBalance)是正确的。 currentBalance.toString() 不是。

你还说:"The non-commented out variables are int and work"

其实如果是int也是一样的原因是不行的