【发布时间】:2012-06-13 09:39:04
【问题描述】:
我可以在外部类或从外部类派生的类内部扩展内部类/特征。我可以扩展外部类的特定实例的内部类,如下所示:
class Outer
{
class Inner{}
}
class OtherCl(val outer1: Outer)
{
class InnA extends outer1.Inner{}
}
注意:即使这样似乎也可以很好地编译产生非常有趣的可能性:
trait OuterA
{ trait InnerA }
trait OuterB
{ trait InnerB }
class class2(val outerA1: OuterA, val outerB1: OuterB)
{ class Inner2 extends outerA1.InnerA with outerB1.InnerB }
但这不会编译:
class OtherCl extends Outer#Inner
据我所知,我正在尝试扩展一个参数化类,其中类型参数是外部类的一个实例,因此效果如下
class OtherCl[T where T is instance of Outer] extends T.Inner
那么在不引用外部特征/类的情况下扩展位于外部特征/类内部的内部类/特征吗?
我不希望在没有外部类实例的情况下实例化派生内部类,只声明其类型。
【问题讨论】:
-
如果内部类引用外部类的成员,您希望行为是什么?
-
@TravisBrown 和往常一样。我不想在没有外部类实例的情况下实例化派生内部类,只声明它的类型。
标签: scala inner-classes