gpt4 book ai didi

java - 是否可以像 Java 那样从子类中引用嵌套类?

转载 作者:搜寻专家 更新时间:2023-11-01 02:35:21 24 4
gpt4 key购买 nike

我正在与之交互的 Java 库具有以下内容:

class Superclass {
static class Nested {}
}

class Subclass extends Superclass {}

这段代码在 Kotlin 中是非法的:

class Test() {
val thing1 = Superclass.Nested()
val thing2 = Subclass.Nested()
}

编译器说 Subclass.Nested 是一个未解析的引用。但是,等效的 Java 代码并不违法:

class Test {
Superclass.Nested thing1 = new Superclass.Nested();
Subclass.Nested thing2 = new Subclass.Nested();
}

在 Kotlin 中是否有其他方法通过使用子类而不是父类(super class)来限定嵌套类来引用嵌套类?

(为什么?因为这里有一个不寻常的弃用模式:Superclass 已弃用并被 Subclass 取代。Nested类将在以后移入 Subclass。这是我工作的外部约束。)

最佳答案

我不确定这是否能解决您的问题,如果您可以从子类访问嵌套类,那么您可以这样做:

open class Superclass {
class Nested
}

class Subclass : Superclass() {

companion object Nested {
operator fun invoke(): Superclass.Nested = Nested()
}

}

class Test() {
val thing1 = Superclass.Nested()
val thing2 = Subclass.Nested()
}

此外,为了避免混淆,您可以创建一个创建嵌套类的函数

class Subclass : Superclass() {

companion object {
fun createNested() = Nested()
}

}

关于java - 是否可以像 Java 那样从子类中引用嵌套类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56435216/

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