通用Class 不支持Class<float>
GenericClass doesn't support Class<float>
我正在将 scichart 集成到我的 android 项目中并遇到此错误。我需要显示 ohlc 数据,所以,基于本教程 https://www.scichart.com/example/android-candlestick-chart-example/ 我写了
val dataSeries = OhlcDataSeries(Date::class.java, Double::class.java)
翻译自 java 代码
IOhlcDataSeries<Date, Double> dataSeries = new OhlcDataSeries<>(Date.class, Double.class);
我遇到了这个错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.qh.cointracker, PID: 5275
java.util.NoSuchElementException: GenericClass doesn't support Class<double>
at com.scichart.data.numerics.math.GenericMathFactory.create(GenericMathFactory.java:65)
at com.scichart.charting.model.dataSeries.DataSeries.<init>(DataSeries.java:91)
at com.scichart.charting.model.dataSeries.XDataSeries.<init>(XDataSeries.java:58)
at com.scichart.charting.model.dataSeries.OhlcDataSeries.<init>(OhlcDataSeries.java:58)
at com.scichart.charting.model.dataSeries.OhlcDataSeries.<init>(OhlcDataSeries.java:73)
at com.qh.cointracker.activities.fragments.SymbolChartFragment.initExample(SymbolChartFragment.kt:57)
at com.qh.cointracker.activities.fragments.SymbolChartFragment.onViewCreated(SymbolChartFragment.kt:37)
谁能告诉我解决这个错误的想法
谢谢。
我很确定 Double::class.java
实际上得到的是原始类型 double
而不是盒装类型 Double
。当查看堆栈跟踪并看到 Class<double>
中的小写 d
时,这似乎很清楚。尝试只使用 Double::class
。
问题是您的代码正在使用相应的原始类型。您可以改用 KClass
上定义的以下 属性:
/**
* Returns a Java [Class] instance corresponding to the given [KClass] instance.
* In case of primitive types it returns corresponding wrapper classes.
*/
public val <T : Any> KClass<T>.javaObjectType: Class<T>
正如 KDoc 描述的那样,将返回相应的包装器类型:
Double::class.javaObjectType //class java.lang.Double
我知道它已经回答了,但为了将来参考:
在他们的 public github 页面上有使用 SciChart Android Charts with Kotlin 的示例。 v2.x -> Showcase 文件夹下
EcgViewModel.kt 展示了如何创建和填充 XyDataSeries
StockChartViewModel.kt 展示了如何创建和填充 OhlcDataSeries
我正在将 scichart 集成到我的 android 项目中并遇到此错误。我需要显示 ohlc 数据,所以,基于本教程 https://www.scichart.com/example/android-candlestick-chart-example/ 我写了
val dataSeries = OhlcDataSeries(Date::class.java, Double::class.java)
翻译自 java 代码
IOhlcDataSeries<Date, Double> dataSeries = new OhlcDataSeries<>(Date.class, Double.class);
我遇到了这个错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.qh.cointracker, PID: 5275
java.util.NoSuchElementException: GenericClass doesn't support Class<double>
at com.scichart.data.numerics.math.GenericMathFactory.create(GenericMathFactory.java:65)
at com.scichart.charting.model.dataSeries.DataSeries.<init>(DataSeries.java:91)
at com.scichart.charting.model.dataSeries.XDataSeries.<init>(XDataSeries.java:58)
at com.scichart.charting.model.dataSeries.OhlcDataSeries.<init>(OhlcDataSeries.java:58)
at com.scichart.charting.model.dataSeries.OhlcDataSeries.<init>(OhlcDataSeries.java:73)
at com.qh.cointracker.activities.fragments.SymbolChartFragment.initExample(SymbolChartFragment.kt:57)
at com.qh.cointracker.activities.fragments.SymbolChartFragment.onViewCreated(SymbolChartFragment.kt:37)
谁能告诉我解决这个错误的想法
谢谢。
我很确定 Double::class.java
实际上得到的是原始类型 double
而不是盒装类型 Double
。当查看堆栈跟踪并看到 Class<double>
中的小写 d
时,这似乎很清楚。尝试只使用 Double::class
。
问题是您的代码正在使用相应的原始类型。您可以改用 KClass
上定义的以下 属性:
/**
* Returns a Java [Class] instance corresponding to the given [KClass] instance.
* In case of primitive types it returns corresponding wrapper classes.
*/
public val <T : Any> KClass<T>.javaObjectType: Class<T>
正如 KDoc 描述的那样,将返回相应的包装器类型:
Double::class.javaObjectType //class java.lang.Double
我知道它已经回答了,但为了将来参考:
在他们的 public github 页面上有使用 SciChart Android Charts with Kotlin 的示例。 v2.x -> Showcase 文件夹下
EcgViewModel.kt 展示了如何创建和填充 XyDataSeries
StockChartViewModel.kt 展示了如何创建和填充 OhlcDataSeries