Расскажите о Data классах. Какие преимущества они имеют?



Data класс предназначен исключительно для хранения каких-либо данных.



Основное преимущество: для параметров, переданных в основном конструкторе автоматически будут переопределены методы toString(), equals(), hashCode(), copy().



Также для каждой переменной, объявленной в основном конструкторе, автоматически генерируются функции componentN(), где N — номер позиции переменной в конструкторе.



Благодаря наличию вышеперечисленных функций внутри data класса мы исключаем написание шаблонного кода.