Object
在scala中被object关键字修饰的类有如下特征:
1、是单例的
2、不需要通过new来创建对象,直接通过类名创建
3、没有有参的主构造器,但是有主构造代码块(不包含在任何方法中的代码,就是object的主构造代码块)
4、通常用于封装一些常量、工具类、枚举和隐式转换函数
5、主构造代码块只会执行一次,因为是单例的
object ObjectDemo {
println("ObjectDemo 的主构造代码块")
def sayHello = println("hello world")
println("ObjectDemo 的主构造代码块2")
}
object ObjectDemo2 {
def main(args: Array[String]): Unit = {
val obj1 = ObjectDemo
val obj2 = ObjectDemo
println(obj1.hashCode() == obj2.hashCode())
}
}
运行结果:
ObjectDemo 的主构造代码块
ObjectDemo 的主构造代码块2
true
object.apply方法
package clazz
object ObjectDemo_02 {
println("hello world")
def apply() = {
println("hello")
}
def apply(nums: Int*): Array[Int] = {
val arr = new Array[Int](nums.length)