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)
}
}
}
scala进阶16-抽象类型
最新推荐文章于 2020-07-31 15:19:50 发布