首页 > 解决方案 > 如何访问伴随对象中的类构造函数参数

问题描述

我想访问传递给伴随对象中的类构造函数的参数:

class Home(private val activity: String) {
    companion object {
        fun doSomething() {
            println(activity)
        }
    }
}

fun main() {
    Home("Hello World").doSomething()

activity但是,当我运行此代码说这是未解决的参考时引发错误

标签: kotlin

解决方案


伴随对象基本上等同于 Java 静态嵌套类(这就是它在底层实现的方式),这意味着即使没有外部类的实例,静态嵌套类的实例也可能存在。例子:

class Outer(private val activity: String) {
    companion object {
        fun doSomething() {
            println("Hello, world!")
        }
    }
}

fun main() {
    Outer.doSomething() // no new Outer instance here
}

如果您想要一个非静态嵌套类(也称为内部类),则可以从内部类中引用外部类的属性。这是因为内部类的实例与外部类的实例相关联。例子:

class Outer(private val activity: String) {
    inner class Inner {
        fun doSomething() {
            println(activity)
        }
    }
}

fun main() {
    Outer("Hello, world!").Inner().doSomething()
}

有关更多信息,您还可以在此处查看有关嵌套(又名静态)和内部(又名非静态)类的 Java 文档:https://docs.oracle.com/javase/tutorial/java/javaOO/nested。 html


推荐阅读