我有一种方法可以更新像这样的DialChart ......
public void updateDatasetSPLmaxSample(double newValue) {
double currentValue = (double)(datasetSPLmaxSample.getValue()); //ERROR THIS LINE
if (newValue > currentValue) {
this.datasetSPLmaxSample.setValue((int)currentValue);
}
}
但是,出于某种原因,我收到以下错误:
线程中的异常"线程9" java.lang.ClassCastException:java.lang.Integer无法强制转换为java.lang.Double
datasetSPLmaxSample.getValue()
会返回一个java Number
,所以将它投射到双倍像我所知的那样,据我所知,这是一个问题,但事实确实如此。为什么呢?
答案 0 :(得分:2)
java.lang.Number
是java.lang.Integer
和java.lang.Double
的抽象超类,但此类兄弟类之间的转换是not permitted。由于您的数据集包含Number
的实例,因此您可以使用doubleValue()
方法。
double currentValue = datasetSPLmaxSample.getValue().doubleValue();