Есть ли в Java объект, похожий на класс данных Kotlin? - PullRequest
0 голосов
/ 19 октября 2019

В настоящее время я изучаю Java, чтобы создать приложение на Android, и я проверил, что swift имеет структуру, которая хранит информацию в памяти. Я хотел бы знать, если в Java существует этот тип объекта, потому что класс хранения ссылки на память. Также я проверил, что у Kotlin есть класс данных, у java есть подобный объект?

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Нет, ничего подобного нет, но есть инструменты, которые пытаются имитировать это поведение, например, lombok. Используя аннотацию @Data, мы получаем конструктор по умолчанию, геттеры, сеттеры, toString, equals, hashCode. Мы можем настроить его, используя аннотации типа @Getter, @NoArgsConstructor и т. Д.

0 голосов
/ 19 октября 2019

Ни в Java, ни в Kotlin нет ничего похожего на те типы Swift, о которых вы говорите. Присвоение всегда копирует ссылки на объект, а не на сам объект. Классы данных Kotlin делают то, что они создают copy метод (среди прочего), который позволяет вам явно сделать копию объекта, но вы все равно должны фактически вызвать метод.

val b = a // b and a point to the same object, even if it is a data class
val b = a.copy() // this is what you need to do to create a copy of a data class

Присвоение Java копирует ссылки, а не объекты, и то же самое верно для Kotlin. Обойти это невозможно, потому что это особенность самого языка. Конструкторы и методы копирования (например, то, что дает вам класс данных Kotlin) - самая близкая вещь к такой возможности. Чтобы получить что-то подобное в Java без необходимости каждый раз писать код вручную, вы можете заглянуть в Project Lombok.

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