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

总是创建懒惰的初始化对象

谭坚诚
2023-03-14

在某些情况下,我的广播接收器是不需要的,所以需要检查接收器是否为空,但有些如何这个对象不为空,即使不使用它和造成崩溃。

private val myBroadCastReceiver by lazy {
   MyBroadcastReceiver()
}
if(myBroadCastReceiver != null) unregisterReceiver(myBroadCastReceiver)

共有1个答案

扶高歌
2023-03-14

当您尝试null检查时,它已初始化,因此不为null。试试这个这个而不是懒惰。

private var myBroadCastReceiver : MyBroadcastReceiver? = null

或者试试这个答案Kotlin:检查惰性val是否已经初始化

 类似资料:
  • 问题内容: 创建单例的模式似乎是这样的: 但是我的问题是,如果Singleton构造函数执行的不是单元测试友好的操作,例如如何调用外部服务,jndi查找等,您如何使用这样的类进行单元化? 我想我可以像这样重构它: 现在的问题是,仅出于单元可测试性,我已强制将getInstance同步,因此仅出于测试方面,它将对实际应用程序产生负面影响。有没有解决的办法,由于Java中双重锁定模式的破坏性,似乎其他

  • 我在想Spring中bean的懒惰初始化。对我来说,这里的“懒惰”是否意味着当一个bean被引用时会被创建并不十分清楚。 我认为Spring中的延迟初始化支持是不同的。我认为这是一个基于“方法调用”的惰性创建。我的意思是,每当对该方法调用任何方法时,都会创建该方法。 我认为这可以通过创建特定bean的代理实例并对任何方法调用进行初始化来轻松解决。 我是否遗漏了一些东西?为什么没有实施?这个概念有什

  • 问题内容: 我有一个初始化为的变量: 问题是,在某个时候,我需要重置此变量,以便在更改后可以再次初始化。但是如果我将类设置为可选的话,LLVM在尝试将它设置为时会给我一个错误。如果我只是使用将其重置在代码中的某个位置,它将最终显示为。 有没有一种方法可以使用并允许自己重置? 问题答案: 懒惰是明确的仅一次初始化。您要采用的模型可能只是按需初始化模型: 现在,只要是,它会被初始化并返回。可以通过设置

  • 问题内容: 当我尝试获取懒惰的初始化实体时,我在IDE中看到以下异常消息(我无法找到它在代理实体中的存储位置,因此无法为该异常提供整个堆栈跟踪): 这是我尝试访问要使用的惰性初始化实体的字段后得到的堆栈跟踪: 我正在使用Spring Data,已配置JpaTransactionManager,数据库是MySql,ORM提供程序是Hibernate4。注释@EnableTransactionMana

  • 你知道为什么jackson不能将这个集合映射到json格式吗?

  • 我有一个列表框,里面有字符串列表。根据选择的字符串,我需要在下面显示一组文本框。我的方法是为每组文本框创建一个JPanel,然后将所有这些JPanel放入卡片布局中。当用户选择一个特殊字符串时,我将翻转卡片布局,以显示带有文本框的相应面板。然而,我不想在手之前创建所有面板,因为用户可能永远不会选择几个列表值。因此,只有当用户选择一个列表值时,我才想检查卡片布局是否添加了此卡片(或面板),如果没有,