scala – 抽象类型模式被取消选中,因为它被擦除消除
发布时间:2020-12-16 09:41:26 所属栏目:安全 来源:网络整理
导读:有人可以告诉我如何在下面的代码块中避免警告: abstract class Foo[T : Bar]{ case class CaseClass[T : Bar](t: T) def method1 = { case CaseClass(t: T) = println(t) csse _ = }} 这会导致编译器警告: abstract type pattern T is unchecked since it
有人可以告诉我如何在下面的代码块中避免警告:
abstract class Foo[T <: Bar]{ case class CaseClass[T <: Bar](t: T) def method1 = { case CaseClass(t: T) => println(t) csse _ => } } 这会导致编译器警告: abstract type pattern T is unchecked since it is eliminated by erasure case CaseClass(t: T) => println(t) ^ 解决方法
您可以使用ClassTag(或TypeTag):
import scala.reflect.ClassTag abstract class Foo[T <: Bar : ClassTag]{ ... val clazz = implicitly[ClassTag[T]].runtimeClass def method1 = { case CaseClass(t) if clazz.isInstance(t) => println(t) // you could use `t.asInstanceOf[T]` case _ => } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- R EnvironmentError:在路径上找不到Ghostscript. RWebLogo
- 如何将引导工具提示放在SVG上?
- 容器中rc.local,login shell, systemctl微妙关系
- twitter-bootstrap – Bootstrap navbar – 从移动设备中删
- angularjs – 传递给$resource的@id是什么?
- Bootstrap基本样式学习笔记之表单(3)
- 你怎么能强迫Twitter的Scala Eval来防止注入代码?我想限制
- axis2调用天气的webservice
- pyspark对应的scala代码PythonRDD对象
- shell学习二十二--case语句