В чем разница между этими классами в Котлине? - PullRequest
0 голосов
/ 14 декабря 2018

Я новичок в Котлине!Можем ли мы объяснить разницу между этими классами в Kotlin

class Person(val name: String, val age: Int)

class Person(name: String, age: Int)

class Person(var name: String,var age: Int)

И как мне добавить getter и setter для класса данных в Kotlin?

1 Ответ

0 голосов
/ 14 декабря 2018

Сначала вы должны попытаться прочитать разницу в руководстве:

https://kotlinlang.org/docs/reference/data-classes.html

https://kotlinlang.org/docs/reference/classes.html

Но давайте попробуем объяснить это:

class Person(val name: String, val age: Int)

Компилятор Kotlin сгенерирует для обоих аргументов конструктора соответствующие поля, хранящие значения, и сгенерирует соответствующие получатели.Значения являются неизменяемыми из-за ключевого слова val, поэтому не будет никаких установщиков.

class Person(name: String, age: Int)

Аргументы передаются только конструктору, но не сохраняются как поля.Таким образом, также не будет методов получения и установки.

class Person(var name: String, var age: Int)

Как и в первом примере, значения хранятся в сгенерированных полях.Но значения изменчивы из-за ключевого слова var, поэтому компилятор будет генерировать геттеры и сеттеры.

data - это дополнительное (необязательное) ключевое слово, которое ставится перед объявлением class.Это в дополнение к методам получения и установки генерирует метод toString, печатающий значения всех атрибутов с их именами, и метод hashCode, учитывающий каждое значение.Так как геттеры и сеттеры генерируются для data классов, вам не нужно добавлять их вручную.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...