"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
是一个 primitive
,Double
是原语 double
的包装器,它是一个 Object
.
您不能在 double
上调用方法,但可以在 Double
.
上调用方法
所以Double.toString(currentBalance)
是正确的。 currentBalance.toString()
不是。
你还说:"The non-commented out variables are int and work"
其实如果是int
也是一样的原因是不行的
在下面的代码片段中,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
是一个 primitive
,Double
是原语 double
的包装器,它是一个 Object
.
您不能在 double
上调用方法,但可以在 Double
.
所以Double.toString(currentBalance)
是正确的。 currentBalance.toString()
不是。
你还说:"The non-commented out variables are int and work"
其实如果是int
也是一样的原因是不行的