Scala中的静态内部类

9 浏览
0 Comments

Scala中的静态内部类

在Scala中,如何实现Java中的以下代码:

public class Outer {
  private Inner inner;
  public static class Inner {
  }
  public Inner getInner() { return inner; }
}

我特别希望我的内部类不需要完全限定的名称 - 也就是说,我希望使用`Trade.Type`,而不是`TradeType`。所以在Scala中,我想象中的实现可能是:

class Outer(val inner: Inner) {

object Inner

}

但是这似乎不起作用:我的Scala中的`Inner`类在`Outer`类外部似乎是不可见的。一种解决方案当然是:

class Inner

class Outer(val inner: Inner)

这样也行 - 但是由于我的类的名称,`Inner`实际上是`Outer`的“类型”,而`Outer`实际上有一个很长的名称。所以:

class SomeHorriblyLongNameType
class SomeHorriblyLongName(myType: SomeHorriblyLongNameType)

这种方式冗长且可怕。我可以将`SomeHorriblyLongNameType`替换为`Type`,但是它和它相关的类之间就没有明显的联系了。哎呀。

0