定义在 object 中名为 apply 的一系列方法在调用时,可以直接使用 对象名(参数)
的形式完成调用。
在伴生对象中定义 apply 方法,可实现不使用 new 关键字创建对象。
使用 new 关键字创建对象时,调用的其实是类的构造方法,当直接使用类名创建对象时,调用的其实是伴生对象的 apply 方法。
案例:
object DateUtils { def apply(time: Long) ={ val format = new SimpleDateFormat("yyyy-MM-dd") format.format(new Date(time)) } def FormatDate(time: Long) ={ val format = new SimpleDateFormat("yyyy-MM-dd") format.format(new Date(time)) } } object Time{ def main(args: Array[String]): Unit = { val time1: String = DateUtils.FormatDate(0) println(time1) // 输出: 1970-01-01 val time2 = DateUtils.apply(0) println(time2) // 输出: 1970-01-01 val time3 = DateUtils(0) println(time3) // 输出: 1970-01-01 } }
Scala 中不可变数组被定义为 Array 对象,更新数组中的元素时,可以使用 update 方法。
案例:
object Update_Train { def main(args: Array[String]): Unit = { val arr = Array(1, 2, 3, 4, 5) arr.update(0, 6) println(util.Arrays.toString(arr)) // 输出: [6, 2, 3, 4, 5] arr(1) = 7 println(util.Arrays.toString(arr)) // 输出: [6, 7, 3, 4, 5] } }