程序员

Scala 单例对象与伴生对象

2018-08-14  本文已影响49人  他与理想国

单例对象

单例对象的使用场景:

Scala单例对象示例:

object Singleton{  
    def main(args:Array[String]){  
        SingletonObject.hello()         // No need to create object.  
    }  
}  


object SingletonObject{  
    def hello(){  
        println("Hello, This is Singleton Object")  
    }  
}

伴生对象

伴生对象的使用场景:

伴生对象实例:

import scala.collection.mutable.Map 

class ChecksumAccumulator { 
    private var sum = 0 
    def add(b: Byte) { 
        sum += b 
    } 

    def checksum(): Int = ~(sum & 0xFF) + 1 
}

object ChecksumAccumulator { 
    private val cache = Map[String, Int]() 
    def calculate(s: String): Int = 
    if (cache.contains(s)) 
        cache(s) 
    else { 
        val acc = new ChecksumAccumulator   //在伴生对象中实例化了伴生类 
        for (c <- s) acc.add(c.toByte) 
        val cs = acc.checksum() 
        cache += (s -> cs) 
        cs 
    } 
}

object Summer { 
    def main(args: Array[String]) { 
        //通过伴生对象直接访问了一个关于处理伴生类的方法
        println(ChecksumAccumulator.calculate("Every value is an object."))
    }
}

//执行结果
-248

上一篇 下一篇

猜你喜欢

热点阅读