Scala类型标签-完全合格与不完全合格

时间:2019-01-07 19:39:42

标签: scala

我有一些代码(难以共享,无法轻松复制),并抛出以下错误:

found: reflect.runtime.universe.TypeTag[com.company.some.package.Individ]
required: reflect.runtime.universe.TypeTag[Individ]

我的代码无法找到TypeTag,因此我尝试显式传递它。即代替

abstract class Validator[T<: Product: TypeTag] {...}
class Validator[Individ] extends Validator[Individ] {...} // Implicits not found

我尝试过..

abstract class Validator[T<: Product](implicit tt: TypeTag[T]) {...}

implicit val tt = typeTag[Individ]
class Validator[Individ] extends Validator[Individ]()(tt) {...} // Wrong type, as above

Individ只是一个案例类

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您可能想要的是

class IndividValidator extends Validator[Individ] {...} 

写作时

class IndividValidator[Individ] extends Validator[Individ]()(tt)

您使用名为IndividValidator的泛型类型参数创建一个新的泛型类Individ,它会掩盖您导入的类。因此,Individ中的术语extends Validator[Individ]与此类型参数而不是您的com.company.some.package.Individ相匹配。换句话说,这是与

相同的代码
class IndividValidator[A] extends Validator[A]()(tt)

这显然不是您想要的。