Как избежать предупреждения об устаревании при использовании 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.

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