Ни в 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.