gpt4 book ai didi

kotlin - Java 允许通过子进程访问 Kotlin 的基变量,但 Kotlin 不允许,为什么?

转载 作者:行者123 更新时间:2023-12-04 01:28:57 24 4
gpt4 key购买 nike

我有一个类如下

open class KotlinBase {
companion object {
const val TAG = "testing"
}
}

它的一个子元素为

class KotlinChild : KotlinBase()

当我尝试从 Java 类访问 TAG 时,我可以

public class JavaOther {
String test1 = KotlinBase.TAG; // This is okay
String test2 = KotlinChild.TAG; // This is okay
}

但是,当从 Kotlin 类访问时,我无法通过 Child 访问。

class KotlinOther {
val test1 = KotlinChild.TAG // Compile/Syntax error
val test2 = KotlinBase.TAG // This is okay
}

为什么我的 Kotlin 类无法通过 KotlinChild 访问继承变量 TAG

最佳答案

这是一个允许您避免歧义的设计决策。 - 子类可以拥有自己的伴生对象,其中的字段/方法与父类中的字段/方法具有相同的名称。

通过仅通过实际类限制对同伴的访问,模糊字段/方法阴影的问题不再存在。

此外,伴生对象不是其他语言中已知的静态成员。尽管如此,大多数用例都是重叠的。

此外,请记住

KotlinBase.TAG

是以下内容的快捷方式:

KotlinBase.Companion.TAG

关于kotlin - Java 允许通过子进程访问 Kotlin 的基变量,但 Kotlin 不允许,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45407880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com