scala進階16-抽象類型

import scala.io.{BufferedSource, Source}

/**
  * 用type關鍵字定義抽象類型
  * 抽象類型可用在方法中
  */
trait Reader {
  type In <: java.io.Serializable //抽象類型限定爲可序列化的(In的上界)
  type Contents
  def read(in: In): Contents
}

/**
  * 基礎trait時需要指明抽象類型是什麼
  */
class FileReader extends Reader{
  type In = String
  type Contents = BufferedSource

  override def read(name: In) = Source.fromFile(name)
}

object Abstract_Type {
  def main(args: Array[String]): Unit = {
    val fileReader = new FileReader
    val content = fileReader.read("/tmp/test.txt")
    for (line <- content.getLines) {
      println(line)
    }
  }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章