源码中的解释,在泛型中,type T是被擦除的。这个是非常有用的,在我们构建数组的时候,但是数组的类型我们也不知道,编译的时候不知道,但是运行的时候要知道,ClassTag只包含实际运行时的类的类型。
ClassTag会帮我们存储T的信息,如下面,传入1,2根据类型推到可以指定T是Int类型,这时候ClassTag就可以把Int类型这个信息传递给编译器。ClassTag运行时指定在编译的时候无法指定的类型信息。
当调用方法传递参数执行时,ClassTag会把参数类型记住,其实ClassTag就是隐式值,将类型传递给T,这就是隐式转换最重要的工作
classtag详细解释https://www.2cto.com/kf/201712/707840.html