在下面的代码片段中,int正确返回,但当我尝试用double NetBeans 8.0.2做同样的事情时,会抱怨"double Cannot be Dereferenced">
未注释的变量有效。注释掉的变量是双变量,不起作用。
@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的值像int一样返回到String?
更新:从我收到的答案来看,我使用的第二种方法似乎有效,但以下方法也同样有效:
@Override
public String toString()
{
return "[" + getAccountNumber() + "], " +
super.toString() + ", " +
owner + ", " +
currentBalance + ", " +
interestRate;
}
我敢打赌它不是在说"Double Cannot be Dereferenced";它很可能说"double
不能被取消引用"。(注意Double
(表示包装类java.lang.Double
(和基元类型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
是primitive
,Double
是基元double
的包装器,它是Object
。
不能在double
上调用方法,但可以在Double
上调用。
因此Double.toString(currentBalance)
是正确的。currentBalance.toString()
不是。
你还说:"未注释的变量是int和work">
事实上,由于同样的原因,如果它的int
是不起作用的。