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

基元类型的属性不允许使用“lateinit”修饰符-Kotlin

蔺敏达
2023-03-14

我的application.properties(读取环境变量)

my.property.from.properties.file=true

MyService类:

@Component
class MyService @Autowired constructor(
    private val someService: SomeService) {

    @Value("\${my.property.from.properties.file}")
    private lateinit var myBooleanEnabled: Boolean

给它赋值并不能解决问题。例如,用

private lateinit var myBooleanEnabled: Boolean = true
    null

对于我所读的内容,我需要一个委托的(https://kotlinlang.org/docs/reference/delegated-properties.html),但我不能完全理解它。另外,如果有一个“更干净”的解决方案,我不想编写另一个方法来设置属性。有什么想法吗?

共有1个答案

曾航
2023-03-14

最简单的事情是将mybooleanenabled定义为nullable,并删除lateinit

private var myBooleanEnabled: Boolean? = null

在这种情况下,它不会被解释为字节码中的原始boolean

但是,在您的情况下,我建议使用构造函数注入。

 类似资料:
  • 我在中定义了一个实例变量,并希望在的方法中初始化它。 在中有什么方法可以做到这一点吗?

  • 但我还是不断地出错。知道为什么吗?我运行了rake db:reset、rake db:migrate和git push以确保更改了本地数据库。然后我运行git、heroku push和heroku run rake db:reset,但我一直得到那个错误。我是不是漏掉了什么?谢谢

  • C++ 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。 下面列出了数据类型修饰符: signed unsigned long short 修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。 修饰符 signed

  • 本文向大家介绍iOS中属性修饰符的作用?相关面试题,主要包含被问及iOS中属性修饰符的作用?时的应答技巧和注意事项,需要的朋友参考一下 ios5之前是MRC,内存需要程序员进行管理,ios5之后是ARC,除非特殊情况,比如C框架或者循环引用,其他时候是不需要程序员手动管理内存的。   ios中当我们定义属性@property的时候就需要属性修饰符,下面我们就看一下不同属性修饰符的作用。有错误和不足

  • 问题内容: 我有一个JPA实体,其属性设置为 但是,当我在JBoss 6上进行部署时,该应用程序会抛出一条错误消息: 我使用Hibernate 3.5作为JPA 2.0实现。 我应该使用什么来引用外键列? 问题答案: 使用代替:

  • private private修饰符是我们使用的最限制的修饰符。它表示它只能被自己所在的文件可见。所以如果我们给一个类声明为private,我们就不能在定义这个类之外的文件中使用它。 另一方面,如果我们在一个类里面使用了private修饰符,那访问权限就被限制在这个类里面了。甚至是继承这个类的子类也不能使用它。 所以一等公民,类、对象、接口……(也就是包成员)如果被定义为private,那么它们只