Как избежать предупреждения об устаревании при использовании FastUtil IntList от Kotlin - PullRequest
0 голосов
/ 15 декабря 2018

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 как операторную функцию, но, похоже, это не работает из-за того, что «Расширение затененоmemeber ".

operator fun IntArrayList.get(i: Int): Int {
    return this.getInt(i)
}

Есть ли другой способ использовать синтаксис индекса массива без предупреждения об устаревании и без подавления всех других устареваний?

1 Ответ

0 голосов
/ 15 декабря 2018

Нет, я не верю, что есть.Вы могли бы написать оболочку, которая была бы нетривиальным трудом.

Другие библиотеки примитивных коллекций не обязательно имеют эту проблему, например, Trove's TIntList может использовать int get(int offset)потому что это не распространяется List<Integer>.То же самое для HPPC .

...