Rar*_*ima 2 oop reference class object kotlin
我需要让一个班级引用另一个班级。不是创建它的副本,而是对已经存在的实例进行实际引用。
我也许可以用一个例子更好地解释它。我们有没有课Image:
class Image(imgPath: String) {
val height : Int
val width : Int
val rgbMatrix: MutableList< MutableList< Triple<Int, Int, Int> > >
/* ... etc. ... */
}
Run Code Online (Sandbox Code Playgroud)
现在说我想要一个ImageManager只引用一个已经存在的类Image:
class ImageManager(val img: Image) {
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
所以我可以有这种行为:
val image = Image("/res/images/image.png")
val imageManager = ImageManager(image)
// Setting the pixel at (125, 25) to black
imageManager.img.rgbMatrix[125, 25] = Triple(0, 0, 0)
// Should print the update value(0, 0, 0)
print( image.rgbMatrix[125, 25] )
Run Code Online (Sandbox Code Playgroud)
我的问题是:
在 Kotlin 中,什么时候在赋值中分配一个引用,什么时候分配一个副本?
我如何确定什么时候发生什么类型的分配?
官方文档中是否有详细说明的部分?如果有我找不到它。
提前致谢!
与 Java 类似,Kotlin 从不在赋值时隐式复制对象。变量始终持有对对象的引用,并且将表达式分配给变量只会复制对对象的引用,而不是对象本身。
在内部,每个值可以是一个原语(Int,Boolean,Char等)或参考。当一个值被赋值时,结果要么是原语的副本,要么是对同一对象的引用的副本,这永远不会导致被引用的对象被复制。
据我所知,这种行为没有明确记录;相反,它被假定为与 Java 中的相同。
| 归档时间: |
|
| 查看次数: |
4908 次 |
| 最近记录: |