Kotlin数据类从哪里延伸?我可以扩充它们吗?
问题描述:
我一直在摆弄Kotlin data
class
es,我在考虑是否有可能增加一些类(例如包含copy
的功能)以增加所有data
class
es?Kotlin数据类从哪里延伸?我可以扩充它们吗?
有没有可能扩充data
class
es?
答
Kotlin的数据类不会从任何类继承(除了JVM上的Any
/java.lang.Object
)。据我所知,没有办法改变例如所有数据类全局为copy
。
用于复制,解构等的方法分别为每个数据类生成。 (请参阅docs)
答
您无法更改Kotlin编译器如何为数据类生成字节码,因此您无法更改例如copy
的功能。然而,自最近更新以来,您可以做的是让您的数据类从其他类继承,因此您可以创建一个抽象基类,用于所有数据类,以便为它们提供附加功能。