Json не имеет разных типов чисел, поэтому по умолчанию все числа разбираются на двойные. Когда вы передаете ArrayList<Long>
в fromJson()
, Gson не может видеть тип <Long>
из-за стирания типа. Когда вы передаете тип класса в библиотеку Java, вы также можете использовать <*>
в качестве типа.
Kotlin позволяет возвращаемому ArrayList<Double>
присваиваться вашему ArrayList<Long>
свойству, потому что во время выполнения оно не может определить разницу (стирание типа).
Однако массивы действительно преобразованы типы. Это может сработать (не проверял):
val divideEntityValue = Gson().fromJson(mDivideEntity.amounts, LongArray::class.java)
Это даст вам LongArray, а не ArrayList. Кроме того, вы должны иметь возможность отобразить возвращенный список в список:
mDivideEntityValue = Gson().fromJson(mDivideEntity.amounts, ArrayList::class.java)
.map { it.toLong() }