Por que o parâmetro Integer do método Java é mapeado para Int e não para o tipo de plataforma?
Inspirado poroutra pergunta.
Nofastutil
biblioteca háIntArrayList
classe que possui um método com a seguinte assinatura Java:
public void push(Integer o)
De Kotlin é visto como
push(o: Int)
Existe uma razão específica para que sejaInt
e não o tipo de plataformaInt!
?
Eu esperava que fossepush(o: Int!)
pelo menos porque um método com a mesma assinatura definida na fonte Java no projeto com fontes Kotlin temInt!
como tipo de parâmetro visto no Kotlin (mesmo definido em um módulo diferente e até importado do jar desse módulo!).
Além disso, o comportamento descrito causapush(Integer o)
entrar em conflito compush(int o)
(na mesma classe) que possuiInt
legalmente - ambos são vistos comopush(o: Int)
. Se houvesseInt!
paraInteger
, não haveria conflito (tentei também definir esse par de métodos no meu código - ainda funciona como eu esperava, háInt!
)
A versão Kotlin é1.0.2
.
Dependência Gradle parafastutil
:
compile group: 'it.unimi.dsi', name: 'fastutil', version: '7.0.12'