With
def fn[T: ClassTag](...)
需要一个隐式的 ClassTag[T] 可用。这些是如何提供的?某处有类标签列表吗?我看到一个implicit val c: ClassTag[Any]
不会削减它,因为 ClassTag 是可变的。如何使类标签可用于自定义类?例如,在
import scala.reflect.ClassTag
class A
def fn[T: ClassTag](e: T) = Array.fill[T](1)(e)
fn(new A())
ClassTag[A]从何而来?这段代码无需我定义即可编译。
在 Predef 中搜索隐式和源代码中的反射包对我没有帮助。
答案在类的文档中:
如果需要 u.ClassTag[T] 类型的隐式值,编译器将根据需要创建一个。