Вы могли бы сделать это с огромным количеством отражений, несколько хрупким способом, используя (недокументированные) методы copy$default$1
и сопоставляя типы с методом copy
, и имея оба реализуют черту, включающую def a: List[String]
и def a_=(a0: List[String])
. Но это плохая идея; поддержка не полностью есть (например, если вы смешаете ее с классом, не относящимся к регистру, он потерпит неудачу во время выполнения), он медленный и экономит лишь небольшое количество печатания.
Если у вас есть случай, когда это сэкономит огромное количество печатного текста, я бы посоветовал вам вместо этого использовать генерацию кода (т.е. код Scala, который пишет код Scala) с дополнительным проходом для компиляции.