Как избежать предупреждения об устаревании при использовании FastUtil IntList от Kotlin
FastUtil содержит оптимизированные реализации коллекций, позволяющие избежать накладных расходов на автобокс. Уведомить программистов о непреднамеренном автобоксировании, например, при использовании IntList
они отметили Integer get(int)
метод устарел, предлагая использовать int getInt(int)
вместо. это приводит к предупреждению об устаревании при использовании синтаксиса индекса массива с такими списками:
import it.unimi.dsi.fastutil.ints.IntArrayList
private fun test() {
val list = IntArrayList(listOf(1, 2, 3))
println(list[0]) // deprecation warning on this line
}
Я пытался переопределить get
как операторная функция, но это, похоже, не работает из-за того, что "Расширение затенено участником".
operator fun IntArrayList.get(i: Int): Int {
return this.getInt(i)
}
Есть ли другой способ использовать синтаксис индекса массива без предупреждения об устаревании и без подавления всех других устареваний?
1 ответ
Нет, я не верю, что есть. Вы могли бы написать обертку, которая была бы нетривиальным объемом работы.
Другие библиотеки примитивных коллекций не обязательно имеют эту проблему, например Trove'sTIntList
можешь использовать int get(int offset)
потому что это не распространяется List<Integer>
, То же самое для HPPC.