java – 只有在Kotlin为空时才在Kotlin中实例化变量?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 只有在Kotlin为空时才在Kotlin中实例化变量?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含873字,纯文字阅读大概需要2分钟。
内容图文
![java – 只有在Kotlin为空时才在Kotlin中实例化变量?](/upload/InfoBanner/zyjiaocheng/765/9a76627adca3442db70fca531d09814f.jpg)
可以说,我有一个变量:
var myObject:MyObject? = null
它应该在某个地方清除:
myObject?.clear
myObject = null
并且在使用地点应该绝对不可为空.在Java中,我可以这样做:
private MyObject getMyObject(){
if(myObject == null) {
myObject = new MyObject()
}
return myObject
}
问题:如何在Kotlin实现这一目标?
我找到了使用elvis-operator的建议:
private fun getMyObject() = myObject ?: MyObject()
但是这不会将结果(如果要创建MyObject的新实例)分配给myObject变量.
请帮我解决和解释.谢谢你
解决方法:
问题是属性的getter和setter不能有不同的类型.我建议一个单独的可空私有属性和一个清除它的方法:
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
}
如果您不止一次需要此模式,请写入delegate.
内容总结
以上是互联网集市为您收集整理的java – 只有在Kotlin为空时才在Kotlin中实例化变量?全部内容,希望文章能够帮你解决java – 只有在Kotlin为空时才在Kotlin中实例化变量?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。