GenericClass не поддерживает класс<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)

Может кто-нибудь дать мне любую идею, чтобы решить эту ошибку

Спасибо.

3 ответа

Решение

Проблема в том, что ваш код работает с соответствующим типом примитива. Вы можете использовать следующее свойство, определенное на 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

Я знаю, что уже ответил, но для дальнейшего использования:

На их общедоступной странице github есть примеры использования SciChart Android Charts с Kotlin. В папке v2.x -> Витрина

EcgViewModel.kt показывает, как создать и заполнить XyDataSeries

StockChartViewModel.kt показывает, как создавать и заполнять OhlcDataSeries

Я уверен, что делать Double::class.java на самом деле получает примитивный тип double а не коробочный тип Double, Это кажется ясным, если посмотреть на трассировку стека и увидеть строчные буквы d в Class<double>, Попробуйте просто использовать Double::class вместо.

Другие вопросы по тегам