Scala 单例对象
scala中没有Java中的静态成员,若想要定义类似于Java的static变量、static方法,就要使用到scala中的单例对象——object.
- 单例对象表示全局仅有一个对象(类似于Java static概念)
- 定义单例对象和定义类很像,就是把class换成object
- 在object中定义的成员变量类似于Java的静态变量
- 可以使用object直接引用成员变量
例如:
- 定义一个Dog单例对象,保存狗有几条腿
- 在main方法中打印狗腿的数量
package demo02
object Scala07 {
// 定义一个单例对象
object Dog {
// 定义腿的数量
val LEG_NUM = 4
}
def main(args: Array[String]): Unit = {
println(Dog.LEG_NUM)
}
}
在单例对象中定义成员方法
在object中定义的成员方法类似于Java的静态方法
例如:
- 设计一个单例对象,定义一个能够打印分割线(15个减号)的方法
- 在main方法调用该方法,打印分割线
package demo02
object Scala08 {
object PrintUtil {
// 打印分割线
def printSpliter() = {
// 字符串乘法,表示返回多少个字符串
println("-" * 10)
}
}
def main(args: Array[String]): Unit = {
PrintUtil.printSpliter()
}
}
例如:
- 编写一个DateUtil工具类专门用来格式化日期时间
- 定义一个方法,用于将日期(Date)转换为年月日字符串,例如:2030-10-05
步骤:
- 定义一个DateUtil单例对象,定义日期格式化方法(format)
- 使用SimpleDateFormat将日期转换为字符串
package demo02
import java.text.SimpleDateFormat
import java.util.Date
object Scala09 {
object DateUtils {
// 在object中定义的成员变量,相当于Java中定义一个静态变量
// 定义一个SimpleDateFormat日期时间格式化对象
val simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm")
// 相当于Java中定义一个静态方法
def format(date: Date) = simpleDateFormat.format(date)
}
// main是一个静态方法,所以必须要写在object中
def main(args: Array[String]): Unit = {
println(DateUtils.format(new Date()))
}
}