如何在Scala中获取java.lang.Enum类的类?

4

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

在Java中,我会这样做:

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

我以为这个问题像在Scala中做这样容易:
addSerializer(classOf[Enum], new LowerEnumSerializer())

然而,我的编译器报错了:

scala: class Enum takes type parameters 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>

如果您不关心特定参数,为什么不直接使用 classOf [Enum [_]],这类似于Java的 Enum <?> - om-nom-nom
1个回答

3
如何考虑:
classOf[Enum[T] forSome { type T <: Enum[T] }]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接