如何在Java中将Double转换为Number,如下面的代码所示?
public Number parse(String text, ParsePosition status) {
// find the best number (defined as the one with the longest parse)
int start = status.index;
int furthest = start;
double bestNumber = Double.NaN;
double tempNumber = 0.0;
for (int i = 0; i < choiceFormats.length; ++i) {
String tempString = choiceFormats[i];
if (Misc.regionMatches(start, tempString, 0, tempString.length(), text)) {
status.index = start + tempString.length();
tempNumber = choiceLimits[i];
if (status.index > furthest) {
furthest = status.index;
bestNumber = tempNumber;
if (furthest == text.length()) break;
}
}
}
status.index = furthest;
if (status.index == start) {
status.errorIndex = furthest;
}
int c= 0;
return new Double(bestNumber);
}
但在Eclipse中显示
Type mismatch: cannot convert from Double to Number
实际上此代码属于ChoiceFormat.java
包中的java.text
类。
答案 0 :(得分:1)
使用cast
Double d=new Double(2);
Number n=(Number)d;
在你的情况下
Double d=new Double(bestNumber);
Number n=(Number)d;
return n;
答案 1 :(得分:1)
java.lang.Double是java.lang.Number的子类。因此,如果从返回java.lang.Double
的方法返回java.lang.Number
,则发布的代码不应显示任何编译错误。
正如Jon Skeet指出的那样,“你在某个地方有一个不同的Double类型或不同的数字类型”。请仔细检查您是否使用java.lang.Double
和java.lang.Number
。