kotlin - 如何访问伴随对象中的类构造函数参数
问题描述
我想访问传递给伴随对象中的类构造函数的参数:
class Home(private val activity: String) {
companion object {
fun doSomething() {
println(activity)
}
}
}
fun main() {
Home("Hello World").doSomething()
activity
但是,当我运行此代码说这是未解决的参考时引发错误
解决方案
伴随对象基本上等同于 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
推荐阅读
- javascript - moment.js 比较两个澳大利亚时区
- javascript - JS - 当 `window.location.hostname` 被更改或与另一个变量进行比较时。让它看起来像一个不同的值
- reactjs - 如何使用 Jest 测试带有 localStorage 的反应组件?
- python - 如何为滚动函数python构建和应用自定义函数?
- django - Django - 将最近的星期一添加到查询集
- python - 获取模型的 __str__ 中相关对象的列表
- python - 用枕头蟒插入段落
- angular - 更改事件不适用于 Angular 8 中的选择标签
- python - 将 StandardScaler 应用于 3D 数组并省略值
- mysql - 订单后如何查看产品列表查询(TRIGGER)