Nullability – val and var revisited
When we declare an instance of a class with val
it does not mean we cannot change the value held in the properties. What determines whether we can reassign the values held by the properties is whether the properties themselves are val
or var
.
When we declare an instance of a class with val
, it just means we cannot reassign another instance to it. When we want to reassign to an instance, we must declare it with var
. Here are some examples:
val someInstance = SomeClass() someInstance.someMutableProperty = 1// This was declared as var someInstance.someMutableProperty = 2// So we can change it someInstance.someImutableProperty = 1 // This was declared with val. ERROR!
In the preceding hypothetical code, an instance called someInstance
is declared, and it is of the SomeClass
type. It is declared as val
. The three lines of code that follow suggest that, if its properties were declared with var
we can change those properties, but, as we have already learned...