Предупреждение компилятора при использовании аннотации @Value в проекте Kotlin

Есть ли какой-либо тип языка Kotlin, который я мог бы использовать в поздней инициализации вместо java.lang.Integer чтобы я не получил предупреждение о компиляторе?

Предположим, у меня есть класс вроде этого:

 class SomeClass { @Value(#{config['poolCapacity']?:'5000'}) lateinit var somePool: Integer } 

Я не могу использовать тип Int из Kotlin, потому что это примитивный тип, и lazeint не принимает его.

Если я придерживаюсь java.lang.Integer он работает нормально, но я получаю предупреждение компилятора такого типа:

SomeClass.kt: (20, 24): Этот класс не должен использоваться в Котлине. Вместо этого используйте kotlin.Int.

Очевидно, я мог бы создать необходимый тип сам, но я просто задаюсь вопросом, есть ли что-то из коробки, и рекомендовал, чтобы мы использовали в такой ситуации, и я просто не могу его найти? (Аннотированный конструктор не является решением в данном конкретном случае).

Самое простое решение – не использовать свойство late initial initialized, поскольку последнее свойство инициализации Kotlin теперь не поддерживает примитивные типы, и вы можете инициализировать его значением по умолчанию весеннего выражения, например:

 @Value(#{config['poolCapacity']?:'5000'}) var somePool: Int = 5000 

В сложном примере вы можете написать делегированные свойства, но вы должны аннотироваться в setter по @set site-target, а не по field / property , например:

 @set:Value(#{config['poolCapacity']?:'5000'}) var value by required<Int>() 

 inline fun <reified T> required(): ReadWriteProperty<Any, T> { return object : ReadWriteProperty<Any, T> { var value: T? = null; override fun getValue(thisRef: Any, property: KProperty<*>): T = value as T override fun setValue(thisRef: Any, property: KProperty<*>, value: T) { this.value = value; } } }