主要的区别在于,如果你有
class Outer {
class Inner {
def foo(x: Inner): Inner = this // just for the example below
}
}
Run Code Online (Sandbox Code Playgroud)
和两个实例Outer:
val a = new Outer
val b = new Outer
Run Code Online (Sandbox Code Playgroud)
然后a.Inner和b.Inner两种不同类型(如Java中,他们俩都可以Outer.Inner),让你不能做
val aInner = new a.Inner
val bInner = new b.Inner
aInner.foo(bInner)
Run Code Online (Sandbox Code Playgroud)
他们确实有一个共同的超类型,这是写的Outer#Inner.
Scala 有适当的嵌套类,就像它们最初是在 Beta 中发明的一样。Java 的内部类不是嵌套类。主要区别在于嵌套类嵌套在封闭对象中,而不仅仅是封闭类中的内部类。IOW:嵌套类是封闭类的对象的运行时实例属性,就像同一个类的两个不同实例具有同名但取值不同的实例变量(字段),它们也具有同名但取值不同的嵌套类.
IOW,foo.SomeInnerClass并且bar.SomeInnerClass是不同的类并且类型不兼容。
| 归档时间: |
|
| 查看次数: |
910 次 |
| 最近记录: |