Почему параметр Integer метода Java отображается на Int, а не на тип платформы?
ВдохновленныйДругой вопрос.
Вfastutil
библиотека естьIntArrayList
класс, у которого есть метод со следующей подписью Java:
public void push(Integer o)
Из Котлина это видно как
push(o: Int)
Есть ли конкретная причина, почему этоInt
а не тип платформыInt!
?
Я ожидал, что это будетpush(o: Int!)
хотя бы потому, что метод с той же сигнатурой, определенной в источнике Java в проекте с источниками Kotlin, имеетInt!
как тип параметра, видимый из Kotlin (даже определенный в другом модуле и даже импортированный из jar этого модуля!).
Также описанное поведение вызываетpush(Integer o)
конфликтовать сpush(int o)
(в том же классе), который имеетInt
параметр юридически - они оба рассматриваются какpush(o: Int)
, Если бы былInt!
заInteger
, не было бы никакого конфликта (я попытался также определить эту пару методов в моем коде - все еще работает, как я ожидаю, естьInt!
).
Котлин версия есть1.0.2
.
Gradle зависимость дляfastutil
:
compile group: 'it.unimi.dsi', name: 'fastutil', version: '7.0.12'