是否存在(dis)优势(例如性能方面),用于在伴侣对象中定义辅助特征的类,而不是将其定义为 inner类?例如:
object Foo {
final class Bar[A, B](val x: A, val y: B)
}
trait Foo[A, B] {
def foo: Foo.Bar[A, B]
}
VS
trait Foo[A, B] {
final class Bar(val x: A, val y: B)
def foo: Bar
}
我倾向于使用第一个变体 - 因为它不需要访问Foo
的任何成员 - 但由于类型参数变得多余,我正在考虑切换到第二个变体。类Bar
仅在内部使用,因此可以获得protected
修饰符。
我认为内部类在某处有一个不可见的Foo.this
成员,但后来我的理解是Foo.Bar
也不像Java那样纯粹是静态的,但可能有一些指向Foo$.this
的指针也是。