Kotlin中的静态初始化块


Answers:


122

从某种角度看,Kotlin中的companion objects等同于Java类的静态部分。特别是,它们是在首次使用类之前初始化的,这使您可以使用它们的init块来代替Java静态初始化器:

class C {
    companion object {
        init {
            //here goes static initializer code
        }
    }
}

1

4
@ voddan,OP询问有关在首次使用现有类之前执行代码的信息。带有object声明的解决方案由于延迟初始化,因此需要在某个地方实际使用它。
热键

1
@voddan您是否愿意解释为什么这是一个过大的杀伤力,还有什么替代方法?
MarcinKoziński'16

2
抱歉,我不好,我误以为您不关心课程的加载。伴侣对象是正确的解决方案
voddan '16

3
companion object  { 
    // Example for a static variable
    internal var REQUEST_CODE: Int? = 500

    // Example for a static method
    fun callToCheck(value: String): String {
        // your code
    }
}

一个类内的对象声明可以用伴随关键字来标记,在此之下我们可以使用像java静态方法和变量这样的方法,比如classname.methodname或classname.variablename


在您的代码中添加一些说明
自由职业者

@DerickDaniel,请立即检查。
abhilasha Yadav '18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.