首页  

Scala object 伴生对象     所属分类 scala 浏览量 186
没有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 模式匹配