Scala深入浅出进阶经典 第58讲:Scala中Abstract Types实战详解

package com.dt.scalaInAction.demo_058

import scala.io.BufferedSource
import scala.io.Source

/**
 * Scala中Abstract Types实战详解
 */
trait Reader {
    /**
     * 用type关键字 声明一个In类型(称为"抽象类型") 
     * 但没有指明具体类型是什么类型  需要在它的实现类中指明具体的类型
     * 
     * 在声明抽象类型时 可以对类型进行限定
     */
    type In <: java.io.Serializable
    type Contents
    /**
     * 在抽象对的可以使用抽象类型
     */
    def read(in: In): Contents
}
class FileReader extends Reader {
    type In = String //在实现中赋值具体的类型
    type Contents = BufferedSource  //type Contents = Contents
    def read(name: In) = {
        Source.fromFile(name)
    } 
}
object Abstract_Types {
    def main(args: Array[String]): Unit = {
        val fileReader = new FileReader
        val content = fileReader.read("E:\\projectTest\\1.txt")
        for (line <- content.getLines) println(line)
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值