gpt4 book ai didi

java - 静态内部类与 Companion 的内部类

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:29 26 4
gpt4 key购买 nike

阅读 Ordesky 关于 Scala 的书的第 20 章,我发现内部类是路径相关的。在其他特性中,这意味着它们只能在外部类中实例化或提供外部类实例。

问题来了:我想在 Scala 中实现一个static inner class,但作者建议这是不可能的。我立即想到让“内部类”(我们称它为 Inner)成为 Outer 的伴随对象的成员。

接受的答案this问题似乎指向那个方向。但这导致了一个问题:Inner 的类型不是 Outer#Inner,我可以尝试类似的方法:

object Outer {
class Inner extends Outer#Inner { }
}

但这不起作用。你知道这方面的工作吗?我有预感可以用抽象类型来完成,但我不确定。

请注意,由于其类型,使 Inner 成为伴随对象的内部类并不完全等同于具有非路径依赖的 Inner 类。

最佳答案

I immediatelly thought of making the "inner class" (lets call it Inner) a member of Outer's companion object.

是的,这是最接近的 Scala 等价物。

But that drives to a problem: Inner's type ins't Outer#Inner

这不是问题,因为Outer#Inner 等同于Java 中Outer非静态 内部类。 IE。它有一个对 Outer 对象的引用。

I would like to get a inner class which is not path dependant or, at least, to know if that is possible

如果您想创建一个不能依赖于路径使用的非伴随内部类,这是不可能的。当然,您可以随时在代码中编写 Outer#Inner 而不是 o.Inner

关于java - 静态内部类与 Companion 的内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26992209/

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