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-抽象类型
最新推荐文章于 2024-05-29 09:36:55 发布
本文介绍了Scala中使用type关键字定义抽象类型的方法,并通过具体的Reader特质实现读取文件的功能。展示了如何通过抽象类型限定参数类型及返回类型,以及在子类中具体实现这些抽象类型。
3576

被折叠的 条评论
为什么被折叠?



