Может ли объект класса, созданный «на лету» в Котлине, иметь конструктор?

Я создаю такой объект в Котлине и передаю его методу:

val myObject = object { @SerializedName("fieldOne") val fieldOne = myFieldOne @SerializedName("fieldTwo") val fieldTwo = myFieldTwo @SerializedName("fieldThree") val fieldThree = myFieldThree } dbManager.save(myObject) // this works fine 

Однако Android Studio жалуется на это и говорит:

Свойство '' fieldOne '' никогда не используется

Я знаю, что могу удалить это предупреждение с помощью опций lint, но хотел бы найти «родной» способ избавиться от этого предупреждения.

Использование вашего object выполняется с отражениями. Фактический класс имеет определенный конструктор, который имеет параметр myFieldOne для myFieldThree .

Для здравого смысла вашего кода вы должны использовать вместо этого класс данных . Kotlin, как Java , статически типизирован, что вы должны использовать как можно больше. Следующим шагом было бы избавиться от любых отражений, которые вам не нужно делать.

Я не знаю, что вы подразумеваете под «родным способом избавиться от него», но есть аннотация для него:

 val myObject = @Suppress("unused") object { @SerializedName("fieldOne") val fieldOne = myFieldOne // ... } 

Конечно, вы можете создать класс данных, но будут случаи использования, когда анонимные синглтоны ( object {} ) являются лучшим выбором, и тогда вам понадобится эта аннотация, чтобы сообщить статическому анализу кода, что это желательно, а не по ошибке.