【发布时间】:2014-11-18 10:37:41
【问题描述】:
阅读 Ordesky 关于 Scala 的书的第 20 章,我发现内部类是路径依赖的。在其他特性中,这意味着它们只能在外部类中实例化或提供外部类实例。
问题出现了:我想在 Scala 中实现一个static inner class,但作者认为这是不可能的。
我立即想到让“内部类”(我们称之为Inner)成为Outer 的伴生对象的成员。
this 问题的公认答案似乎指向了这个方向。
但这会导致一个问题:Inner 的类型不是Outer#Inner,我可以尝试类似:
object Outer {
class Inner extends Outer#Inner { }
}
但这不起作用。你知道这方面的工作吗? 我有预感它可以用抽象类型来完成,但我不确定。
请注意,将 Inner 设为伴随对象的内部类并不完全等同于具有非路径依赖的 Inner 类,因为它的类型。
【问题讨论】:
-
我想你不只是担心名字好看吗?你错过了什么机械后果/行为,并想和你一起模仿
Outer#Inner尝试? -
@AndrzejDoyle 不,我不只是担心名字,这可以通过我链接的答案来解决。我想获得一个不依赖路径的内部类,或者至少知道这是否可能。
标签: java scala oop inner-classes companion-object