- 这段代码是一个名为 checkAndFillNull 的 Scala 函数,它接受一个类型为 T 的对象作为输入,并返回相同类型的对象。该函数检查输入对象中的任何字段是否为 null,如果是,则根据其类型使用默认值填充它们。
- 例如,如果字段的类型为 Int,则会用 0 填充。如果字段的类型为 String,则会用空字符串(“”)填充。如果字段的类型为 Option[_],则会用 None 填充。如果字段的类型未在函数中指定,则会用 null 填充。
1. 函数实现
import scala.reflect.ClassTag
import scala.reflect.runtime.universe._
def checkAndFillNull[T: TypeTag : ClassTag](obj: T): T = {
val mirror = runtimeMirror((obj.getClass.getClassLoader))
val classSymbol = typeOf[T].typeSymbol.asClass
val classMirror = mirror.reflectClass(classSymbol)
val constuctorSymbol = typeOf[T]