我可以在外部类中或在从外部类派生的类中扩展内部类/特征 . 我可以扩展外部类的特定实例的内部类,如下所示:
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
据我所知,我正在尝试扩展一个参数化类,其中type参数是外部类的一个实例,所以有一些影响
class OtherCl[T where T is instance of Outer] extends T.Inner
So is the anyway to extend an inner class/ trait that's inside an outer trait/class without reference to the outer trait/class?
我不想在没有外部类的实例的情况下实例化派生的内部类,只声明它的类型 .
2 回答
您可以使用具有self-type的特征来执行类似的操作 . 例如,假设我们有以下内容:
我们希望在没有
Outer
的情况下为Inner
添加一些功能:现在,当我们实例化一个
Inner
时,我们可以混合使用MyInner
:这不是你想要的,而是接近 .
不完全是您正在寻找的,但具有路径依赖类型(可在2.10或2.9上使用-Ydependent-method-types标志,您可以执行以下操作:
希望有所帮助