Java – variables are instantiated in kotlin only when kotlin is empty?
•
Java
It can be said that I have a variable:
var myObject:MyObject? = null
It should be cleared somewhere:
myObject?.clear myObject = null
And the place of use should never be empty In Java, I can do this:
private MyObject getMyObject(){ if(myObject == null) { myObject = new MyObject() } return myObject }
Question: how can this be achieved in kotlin?
I found suggestions for using Elvis operator:
private fun getMyObject() = myObject ?: MyObject()
However, this does not assign the result (if you want to create a new instance of MyObject) to the MyObject variable Please help me solve and explain thank you
Solution
The problem is that property getters and setters cannot have different types I suggest a separate nullable private property and a method to clear it:
private var _myObject: MyObject? = null var myObject: MyObject // or val,depending get() { if (_myObject == null) { _myObject = MyObject() } return _myObject!! } set(value: MyObject) { _myObject?.clear() _myObject = value } fun clearMyObject() { _myObject?.clear() _myObject = null }
If you need this mode more than once, write delegate
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码