Подкласс гарантированно будет классом дела
Нет, это не так.Product
может быть реализовано неклассовыми классами.
И даже если бы copy
методы разных классов case были разными методами с разными сигнатурами, нет единого copy
метода для вызова.
Хотя вы можете в основном реализовать specialCopy
, используя отражение и productIterator
.Примерно:
def specialCopy = getClass.getConstructors()(0).newInstance(this.asInstanceOf[Product].productIterator.asInstanceOf[Iterator[Object]].toSeq: _*)
Это не будет работать для классов с более чем одним списком параметров (включая неявные параметры) или для внутренних классов.