If I clear()
my local list (mList
) it also clearing companion
's Mutablelist (list
)
Why this happening explanation's are welcome :)
I've a class with companion
like this :
class Data {
companion object {
var list:MutableList<String> = ArrayList()
}
}
If I create my local list something like this :
fun main() {
// some dummy data
Data.list.add("Lion")
Data.list.add("Cat")
Data.list.add("Dog")
Data.list.add("Cheetah")
// my local mList
val mList = Data.list
println("Before Clearing : mList = $mList\n list = ${Data.list}")
mList.clear()
println("After Clearing : mList = $mList\n list = ${Data.list}")
}
OutPut
Before Clearing : mList = [Lion, Cat, Dog, Cheetah]
list = [Lion, Cat, Dog, Cheetah]
After Clearing : mList = []
list = []
As You can see in output if I clear()
local mList
it is clearing companion
's list Why it is ?
if I do this same with some other things like double
it is not happening like this example -
// same Data class's
...
var pi = 3.14
...
If change local mPi
it doesn't change pi
:
var mPi = Data.pi
println("Before Assigning to New value mPi = $mPi and pi = ${Data.pi}")
mPi = 319.12
println("After Assigning to New value mPi = $mPi and pi = ${Data.pi}")
2nd Output
Before Assigning to New value mPi = 3.14 and pi = 3.14
After Assigning to New value mPi = 319.12 and pi = 3.14
Link of Kotlin Playground
Why it is happening? I'd like to know :)