其实我有以下
open class Texture
由几个类扩展,例如Texture2d
现在,Texture有相当多的属性
protected val storage: StorageLinear?
protected val target: Target
protected val format: Format
protected val baseLayer: Int
protected val maxLayer: Int
protected val baseFace: Int
protected val maxFace: Int
protected val baseLevel: Int
protected val maxLevel: Int
protected val swizzles: Swizzles
因此我想把它作为一个data类来利用equals()它附带的..
但不幸的是data并且open不兼容..(见这个问题)
我可以解决它的一种方法,我可以编写自己的equals()方法,但这将是样板代码和肮脏的代码,这正是我通过 java 切换到 kotlin 的两个最大原因
另一种方式,由于所有classes 扩展Texture并没有真正添加任何东西,它们充当一种构建器(看起来 cppTexture2d类),是否将它们用作.. 构建器(参见Kirill 的这个优秀答案)
但是由于没有什么是免费的,这个解决方案的一大缺点是我失去了Texture2d作为一个类的可能性,并且Texture2d有一个很好的操作符[]来检索纹理的单个图像..
由于 kotlin 社区看起来非常活跃和支持,我想知道您是否有更好的主意..