Почему у вас есть эта строка?
implicit private val tag: TypeTag[T] = typeTag[T]
Не ясно, что T
находится в этой области, но в результате tag
будет null
, потому что typeTag[T]
видит доступное неявное tag: TypeTag[T]
и возвращает его. За исключением того, что он еще не инициализирован, поэтому он увидит null
. Затем, если typeOf[T]
используется с тем же T
, он получит null
в качестве неявного аргумента, что приведет к исключению, которое вы видите.
private val ovalType = getTypeString
Без параметра типа это, вероятно, выведет getTypeString[Nothing]
. Это то, что вы хотите?