当前位置: 首页 > 知识库问答 >
问题:

Kotlin:检查惰性瓦尔是否已经初始化

曹振
2023-03-14

有没有一种方法可以告诉一个懒惰的瓦尔是否已经在Kotlin中初始化,而不是在这个过程中初始化它?

val messageBroker: MessageBroker by lazy { MessageBroker() }
if (messageBroker == null) {
    // oops
}
private var isMessageBrokerInstantiated: Boolean = false
val messageBroker: MessageBroker by lazy {
    isMessageBrokerInstantiated = true
    MessageBroker()
}

...

if (!isMessageBrokerInstantiated) {
    // use case
}

相关(但不相同):如何检查“lateinit”变量是否已初始化?

共有1个答案

卞博简
2023-03-14

有一种方法,但是您必须访问由lazy{}返回的委托对象:

val messageBrokerDelegate = lazy { MessageBroker() }
val messageBroker by messageBrokerDelegate

if(messageBrokerDelegate.isInitialized())
    ...

IsInitialized接口Lazy 上的一个公共方法,下面是文档。

 类似资料:
  • 问题内容: 我需要使用类似于php的isset函数的东西。我知道php和java截然不同,但是php是我先前类似编程知识的唯一基础。是否有某种方法可以返回一个布尔值,用于确定实例变量是否已初始化。例如… 到目前为止,我遇到了这个问题,当我的程序试图隐藏或删除尚未构造的对象时,出现运行时错误。 问题答案: 假设您对是否已为变量 明确赋值 感兴趣,答案是“不是真的”。但绝对的字段(实例变量或类变量)尚

  • 我找到了静态编程语言Lazy对象的答案,在这里使用:静态编程语言:检查Lazy val是否已初始化 但看起来像匕首。Lazy没有相同的公共方法。 这就是我如何懒洋洋地使用Dagger注射: 如何在不调用someService的情况下检查someService是否已初始化。get()哪个将初始化它?除了引入布尔标志并自己跟踪它之外。。 谢谢

  • 我想知道是否有一种方法可以检查变量是否已经初始化。例如:

  • 我想知道是否有办法检查变量是否已初始化。例如:

  • 问题内容: 我有一个PHP文件,有时从启动会话的页面调用该文件,有时从没有会话启动的页面调用该文件。因此,当我使用此脚本时,有时会收到“会话已开始”的错误消息。为此,我放置了以下几行: 但是这次我收到了以下警告消息: 注意:未定义的变量:_SESSION 有没有更好的方法来检查会话是否已经开始? 如果我使用它,它将使一切正常运行,只是关闭警告? 问题答案: PHP > = 5.4.0和PHP 7*

  • 问题内容: 哪种方法检查变量是否已初始化是更好/正确的方法?(假设变量可以容纳任何内容(字符串,整数,对象,函数等)) 要么 要么 问题答案: 该运营商将检查变量真的不确定。 该运营商,不同于其他运营商,不会抛出 的ReferenceError 与未声明的变量使用时例外。 但是,请注意将返回。我们必须小心避免将变量初始化为的错误。为了安全起见,我们可以改用以下方法:

  • 延迟初始化 是一种允许我们延迟初始化消耗资源比较大的进程,直到需要他们的时候(才初始化)。这其中的一个例子就是jQuery的.ready()方法,它在DOM节点加载完毕之后会执行一个回调方法。 $( document ).ready( function () { //ajax请求不会执行,直到DOM加载完成 var jqxhr = $.ajax({ url: "ht

  • 我正在开发一个Struts2 Spring Hibernate webapp,我需要在检索一个对象或该对象的集合后初始化一个惰性集合。 用例 我有一个团队模型,其关系被热切地加载为员工(我认为这显然是一个集合)。反过来,员工模型有一个懒惰的关系注册表,我只需要一些特定的操作,所以我根本不需要急切地加载它。 现在。我调用我的(用Spring注入到我的Struts2控制器中),以便检索一个特定的已经加