其实我有以下
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 的两个最大原因
另一种方式,由于所有class
es 扩展Texture
并没有真正添加任何东西,它们充当一种构建器(看起来 cppTexture2d
类),是否将它们用作.. 构建器(参见Kirill 的这个优秀答案)
但是由于没有什么是免费的,这个解决方案的一大缺点是我失去了Texture2d
作为一个类的可能性,并且Texture2d
有一个很好的操作符[]
来检索纹理的单个图像..
由于 kotlin 社区看起来非常活跃和支持,我想知道您是否有更好的主意..