GOOGLE ADS

пятница, 29 апреля 2022 г.

Как изменить передачу параметра в класс данных kotlin?

Скажем, у меня есть класс данных

data class MyClass(val crop: Rect, val name: String)

Но я хочу сделать копию переданного Rect, так как я не хочу, чтобы значение было изменено позже. Я не хочу, чтобы звонивший звонил

MyClass(Rect(inCrop), "name")

в коде. Как я могу сделать это в своем классе данных?

Спасибо.


Решение проблемы

Я могу придумать один обходной путь:

data class MyClass(private var privateCrop: Rect, val name: String) {
val crop get() = privateCrop
init {
privateCrop = Rect(privateCrop)
}
}

Вы делаете cropprivate и делаете его var( privateCrop), затем добавляете для него общедоступный геттер. Теперь вы можете скопировать его в initблок.

Но должен признать, это довольно некрасиво. Лучшее решение здесь, я думаю, состоит в том, чтобы измениться Rect, чтобы быть неизменным, но если Rectэто не находится под вашим контролем, то, я думаю, ничего не поделаешь. Вы также можете рассмотреть возможность использования обычного класса.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...