1

假设我有一个将泛型类作为参数的方法。这个泛型必须实现什么才能被 Circe 编码?即我们怎么知道这个类定义了一个编码器?

def func[C: TraitIWouldLikeToKnowAbout](jsonEncodable: C) = ???

谢谢

4

1 回答 1

1

您可以使用这样的东西让编译器知道C应该在范围内有一个隐式Encoder实例:

def func[C <: TraitIWouldLikeToKnowAbout : Encoder](jsonEncodable: C) = ???

这是类型的隐式证据参数的简写Encoder[C]

def func[C <: TraitIWouldLikeToKnowAbout](jsonEncodable: C)(implicit en: Encoder[C]) = ???

然后显然您需要确保该实例Encoder[C]在范围内可用,无论是通过(半)自动派生还是手动声明。

于 2017-03-09T05:20:41.573 回答