4

我是 Scala 的新手,我正在将一些 Java 代码转换为使用 Jackson 库处理 JSON 序列化的 Scala。我在 Jackson SimpleModule 实现中遇到了问题。

在 Java 中,我会这样做:

 addSerializer(Enum.class, new LowerEnumSerializer());

我认为这就像在 Scala 中那样简单:

addSerializer(classOf[Enum], new LowerEnumSerializer())

但是,我的编译器抱怨:

scala:类枚举采用类型参数 addSerializer(classOf[Enum], new LowerEnumSerializer())

我猜这是因为 Java 的 Enum 看起来像:

public abstract class Enum<E extends Enum<E>>

有任何想法吗?

编辑

我不能使用 classOf[Enum[_]] 因为 addSerializer 方法如下所示:

public <T> SimpleModule addSerializer(Class<? extends T> type, JsonSerializer<T> ser)

编辑 2 我不能使用 classOf[Enum[_ <: Enum[_]],我得到:

Type mismatch, expected: JsonSerializer[_], actual: Class[Enum[_ <: Enum[_]]

JsonSerializer 看起来像:

public class LowerEnumSerializer extends StdScalarSerializer<Enum>
4

1 回答 1

3

怎么样:

classOf[Enum[T] forSome { type T <: Enum[T] }]
于 2013-05-01T16:48:28.480 回答