如何判断一个类型是否是单例?
case object Foo
case class Bar(i: Int)
def isSingleton[A](implicit t: reflect.ClassTag[A]): Boolean = ???
assert( isSingleton[Foo.type])
assert(!isSingleton[Bar ])
您需要一个ClassTag
(<:<
已弃用ClassTag
)?如果没有,那么它的工作方式如下:
scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._
scala> def isSingleton[A : TypeTag] = typeOf[A] <:< typeOf[Singleton]
isSingleton: [A](implicit evidence$1: reflect.runtime.universe.TypeTag[A])Boolean
scala> isSingleton[Foo.type]
res5: Boolean = true
scala> isSingleton[Bar]
res6: Boolean = false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)