阅读 Ordesky 的 Scala 书籍第 20 章,我发现内部类是路径相关的。除了其他特性之外,这意味着它们只能在外部类内部实例化或者给出外部类实例。
问题是:我想在 Scala 中实现一个静态内部类,但作者认为这不可能。 我立即想到将“内部类”(我们称之为 Inner)作为 Outer 的伴生对象的成员。 this 问题的被接受答案似乎指向了这个方向。 但是会遇到一个问题:Inner 的类型不是 Outer#Inner,我可以尝试一些类似于:
这不起作用。你知道有什么解决方法吗? 我有一种预感,它可以使用抽象类型来完成,但我不确定。
请注意,将“Inner”作为伴生对象的内部类并不完全等同于具有非路径依赖的“Inner”类,因为其类型不同。
问题是:我想在 Scala 中实现一个静态内部类,但作者认为这不可能。 我立即想到将“内部类”(我们称之为 Inner)作为 Outer 的伴生对象的成员。 this 问题的被接受答案似乎指向了这个方向。 但是会遇到一个问题:Inner 的类型不是 Outer#Inner,我可以尝试一些类似于:
object Outer {
class Inner extends Outer#Inner { }
}
这不起作用。你知道有什么解决方法吗? 我有一种预感,它可以使用抽象类型来完成,但我不确定。
请注意,将“Inner”作为伴生对象的内部类并不完全等同于具有非路径依赖的“Inner”类,因为其类型不同。