Scala中classTag与implicitly获取ClassTag是否等价?
两种ClassTag获取方式是否等价?
这两种写法完全等价。
classTag[T]是Scala标准库提供的语法糖,其底层实现就是调用implicitly[ClassTag[T]]来获取对应的隐式ClassTag实例。换句话说,classTag[String]只是implicitly[ClassTag[String]]的简化写法,二者在功能、运行时行为以及最终得到的ClassTag实例上没有任何区别。
你的代码示例:
import scala.reflect.{classTag, ClassTag} val stringClassTag: ClassTag[String] = implicitly[ClassTag[String]] val stringClassTag2: ClassTag[String] = classTag[String]
在实际开发中,classTag[T]是更常用的写法,因为它更简洁直观;而implicitly[ClassTag[T]]则是显式触发隐式查找的底层写法,二者可以互换使用。
内容的提问来源于stack exchange,提问作者Bostonian
相关产品推荐
相关产品推荐

