假设我有一个将泛型类作为参数的方法。这个泛型必须实现什么才能被 Circe 编码?即我们怎么知道这个类定义了一个编码器?
def func[C: TraitIWouldLikeToKnowAbout](jsonEncodable: C) = ???
谢谢
您可以使用这样的东西让编译器知道C
应该在范围内有一个隐式Encoder
实例:
def func[C <: TraitIWouldLikeToKnowAbout : Encoder](jsonEncodable: C) = ???
这是类型的隐式证据参数的简写Encoder[C]
def func[C <: TraitIWouldLikeToKnowAbout](jsonEncodable: C)(implicit en: Encoder[C]) = ???
然后显然您需要确保该实例Encoder[C]
在范围内可用,无论是通过(半)自动派生还是手动声明。