Scala object 伴生对象
所属分类 scala
浏览量 657
没有static
object 单例对象 相当于静态工具类
在同一个文件内定义同名的 class 和 object
Marker.scala
MakerDemo.scala
// 私有构造方法
class Marker private(val color:String) {
println("Marker create run " + this)
override def toString(): String = "color="+ color
}
// 伴生对象,与类同名,可访问类的私有属性和方法
object Marker{
private val markers: Map[String, Marker] = Map(
"red" -> new Marker("red"),
"blue" -> new Marker("blue"),
"green" -> new Marker("green")
)
def apply(color:String) = {
if(markers.contains(color)) markers(color) else null
}
def getMarker(color:String) = {
if(markers.contains(color)) markers(color) else null
}
def main(args: Array[String]) {
// 调用 apply
println(Marker("green"))
println(new Marker("red"))
println(Marker.getMarker("blue"))
}
}
MakerDemo.scala
object MakerDemo {
def main(args: Array[String]) {
// 不能访问私有构造函数
// new Marker("red")
println(Marker("green"))
println(Marker.getMarker("blue"))
println(Marker getMarker "red")
}
}
上一篇
下一篇
scala implicit 隐式参数
scala implicit 隐式类
2022中国SaaS领域新形势
Scala中apply的用法
大数据工程师入门概述
scala 模式匹配