有人以前有过类似的问题吗?
如何声明init()的默认变量值?
下面是我的代码示例,
@Value("\${app.email-config-file: D:\\email\\src\\main\\resources\\email.config}")
private lateinit var emailDir: String
init {
log.info("====================================================================================================")
log.info("Email Config File Dir: ${this.emailDir}")
log.info("====================================================================================================")
}
然后在下面抛出异常:
起因:科特林。UninitializedPropertyAccessException:late init属性emailDir尚未初始化
任何解决方案都可以共享?
我想你用的是spring和他的DI。
问题是您在创建实例之前调用了电子邮件字段,如果没有任何实例,则无法注入依赖项。要解决此问题,请在构造函数中设置依赖项。
@Component
class Foo @Inject constructor(@param:Value("\${some.property}") val emailDir: String)
{
init
{
log.info("=============================================================")
log.info("Email Config File Dir: ${this.emailDir}")
log.info("=============================================================")
}
}
如何声明init()的默认变量值?
一旦有了默认值,该属性就不必标记为lateinit
。因此,您只需:
@Value("\${app.email-config-file: D:\\email\\src\\main\\resources\\email.config}")
private var emailDir: String = "someDirectory/"
init {
log.info("=============================================================")
log.info("Email Config File Dir: ${this.emailDir}")
log.info("=============================================================")
}
在实际设置值之前,无法访问 Kotlin lateinit var
属性,在这种情况下,将引发未初始化的属性访问异常
。
根据我在代码中看到的,您希望属性值由框架(Spring?)设置基于@Value
注释。但是,您可以访问init
块中的属性,该块在对象构造时执行,我敢肯定,框架只有在构造对象之后才设置值。
您可以避免在设置属性值之前使用它(不要在< code>init块和其他属性初始化器中使用它),或者为属性提供一个默认值,如@wasyl的回答。
这是我的主要功能 我在我的主类中调用它,并且一切正常,我可以得到响应。 当我想为它编写测试时,我遇到了错误“kotlin.UninitializedPropertyAccessException:lateinit属性客户端尚未初始化”,有人能帮我吗?"
我想在Spring靴中通过kotlin在另一个类中注入一个单例。 S.kt WorkingGroup.kt 通过这段代码,我得到以下错误: 我搜索了这个错误,发现了一些类似的结果,但是问题没有解决。< br >在kotlin中,如何在伴随对象中注入服务?
函数用于将包含空格或 的字符串转换为帕斯卡大小写。 以下是我的代码- 我在变量之前使用了keyword。在for循环中,我已初始化变量,但编译器仍抛出以下错误- 麻烦帮我下码谢谢
Json服务器数据显示,在使用retrofit2和rxjava2的android中,当参数传递给inteface时,会出现错误。 接口
我不知道这是怎么回事 主要活动 我遇到了这个问题 2022-03-18 09:18:27.393 13874-13874/com。实例githubuser2 E/AndroidRuntime:致命异常:主进程:com。实例githubuser2,PID:13874 java。lang.RuntimeException:无法启动活动组件信息{com.example.githubuser2/com.e
我有一个类,我注入到ViewModel ViewModel工厂,当在活动中的onCreate方法中初始化视图模型时,它说传递的值没有初始化。 下面是我的代码 我对Kotlin很陌生,所以尝试过调试,但在这个问题上卡住了。 这是Mainactive代码: 我的ViewModelFactory: 我的班级回购: 这是我收到的错误: