scala和抽象类型“拆箱”

时间:2013-02-04 03:20:18

标签: scala abstract-type

给定课程

object A {
  type URLT = String
}

case class A(url : URLT)

class ForeignStreamWriter {
  def writeString(str: String) {}
}

trait WriterA {

  val writer : ForeignStreamWriter

  def write(src: A) {
    writer.write(src.url)
  }
}

如何告诉编译器我在 writer.write(src.url)中使用String而不是URLT?我无法修改ForeignStreamWriter的签名。

UPD

至于现在,我找到了唯一的解决方案

  def write(src: A) {
    writer.write(src.url.asInstanceOf[String])
  }

但我真的不喜欢它。

1 个答案:

答案 0 :(得分:1)

您需要在import A._范围内。顺便说一句,如果没有它,你的样本就不会编译。