hangscer

Scala中的object

2017/02/11

object

如图,这是一个名叫Accounts的对象:

编译后得到两个文件:


以此反编译得到:

上图为Accounts.java,object Accounts中的三个对外可访问的字段或者方法,在此得以显现。


上图为Accounts$.java


伴生对象

如下图,

Account.javaAccount$.java反编译分别得:


类和其伴生对象可以访问对方私有属性。


apply方法

比如,Array对象定义了applay方法,Array("a","b")定义了数组。
那么Array(100)new Array(100)的区别是

  • Array(100)相当于Array.apply(100),类型为Array[Int]
  • new Array(100)调用了构造器this(100),类型为Array[Nothing],100个null元素