Использование синтетических свойств Kotlin

#maven #intellij-idea #kotlin

#maven #intellij-идея #kotlin

Вопрос:

Я пытаюсь использовать Vert.x в Kotlin. У меня есть следующий фрагмент кода:

 val deploymentOptions = DeploymentOptions()
deploymentOptions.setConfig(JsonObject().put("http.port", 8081))
  

Все работает нормально. Однако IntelliJ IDEA сообщает во второй строке, что я должен использовать «синтетические свойства Kotlin».

Есть идеи, как это сделать в этом случае. Кроме того, я использую Maven.

Ответ №1:

Нажмите alt enter в этой строке. ИДЕЯ должна предложить вам решение. Выберите один.

Вероятно:

deploymentOptions.config = JsonObject().put("http.port", 8081)

Ответ №2:

В документации Kotlin для Java interop говорится о получателях и установщиках и о том, как они связаны со свойствами:

Методы, которые следуют соглашениям Java для методов получения и установки (методы без аргументов с именами, начинающимися с get, и методы с одним аргументом с именами, начинающимися с set), представлены в Kotlin как свойства.

И в нем приведен пример:

 import java.util.Calendar

fun calendarDemo() {
    val calendar = Calendar.getInstance()
    if (calendar.firstDayOfWeek == Calendar.SUNDAY) {  // call getFirstDayOfWeek()
        calendar.firstDayOfWeek = Calendar.MONDAY       // call setFirstDayOfWeek()
    }
}
  

Подсказка, которую вы получаете в своей IDE, говорит вам, что лучше (идиоматично) использовать синтаксис свойств вместо прямого вызова средства получения или установки. Поэтому вместо использования:

 deploymentOptions.setConfig(...)
  

Вы бы использовали:

 deploymentOptions.config = ...