oxb*_*kes 36 java static scala inner-classes
Scala中使用Java进行此类操作的模拟是什么:
public class Outer {
private Inner inner;
public static class Inner {
}
public Inner getInner() { return inner; }
}
Run Code Online (Sandbox Code Playgroud)
我特别希望我的内部阶级不必拥有一个完全限定的名字 - 即我想要的Trade.Type,不是TradeType.所以在Scala我想象它可能是这样的:
class Outer(val inner: Inner) {
object Inner
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用:我的scala Inner似乎从课外看不出来Outer.一个解决方案当然是:
class Inner
class Outer(val inner: Inner)
Run Code Online (Sandbox Code Playgroud)
这是确定-但因为我的课的名字,Inner真是的"类型" Outer和Outer实际上有一个很长的名字.所以:
class SomeHorriblyLongNameType
class SomeHorriblyLongName(myType: SomeHorriblyLongNameType)
Run Code Online (Sandbox Code Playgroud)
这是冗长而可怕的.我可以SomeHorriblyLongNameType用just 替换,Type但是它与它所涉及的类之间没有明显的联系.表示不快
agi*_*all 37
如果不需要访问内部类中的外部类(由于声明了内部类,您不会在Java中使用),您可以执行类似这样的操作static:
object A{
class B {
val x = 3
}
}
class A {
// implementation of class here
}
println(new A.B().x)
Run Code Online (Sandbox Code Playgroud)
Jor*_*tiz 25
正如其他人所指出的那样,"静态"类应该放在伴随对象中.
在Scala中,作为类成员的类,特征和对象是路径相关的.例如:
class Button {
class Click
}
val ok = new Button
val cancel = new Button
val c1 = new ok.Click
val c2 = new cancel.Click
Run Code Online (Sandbox Code Playgroud)
现在c1和c2是-different-类的实例.一个类是ok.Click,另一个是cancel.Click.如果要引用所有Click类的类型,可以说Button#Click.
Scala中没有"静态"成员的概念.相反,Scala将类Y的静态成员视为单例对象Y的成员
因此,似乎您可以在Object中定义一个类,但不能在类中定义静态类.
| 归档时间: |
|
| 查看次数: |
17175 次 |
| 最近记录: |