小编Ric*_*rtz的帖子

使用泛型实现Scala特征的类型

基本上,我正在尝试执行以下操作:

trait Foo[T] extends T {
  def json: Writes[T]
  def bar: String = {
    Json.toJson[T](this)(json).toString
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望编译器强制使用trait Foo的任何类都是T类.不幸的是,'extends T'无效.现在,我能做的最好的事情如下:

trait Foo[T] extends T {
  def json: Writes[T]
  def bar: String = {
    Json.toJson(this.asInstanceOf[T])(json).toString
  }
}
Run Code Online (Sandbox Code Playgroud)

但显然,编译器没有强制执行任何操作.反正有没有实现我想要的?

generics scala traits

3
推荐指数
1
解决办法
93
查看次数

标签 统计

generics ×1

scala ×1

traits ×1