【问题标题】:How do I get the class of java.lang.Enum in scala?如何在 scala 中获取 java.lang.Enum 的类?
【发布时间】:2013-04-25 16:29:02
【问题描述】:

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

在 Java 中,我会这样做:

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

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

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

但是,我的编译器抱怨:

scala: class Enum 接受类型参数 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&lt;?&gt;

标签: java scala serialization jackson


【解决方案1】:

怎么样:

classOf[Enum[T] forSome { type T <: Enum[T] }]

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 2011-07-12
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2011-04-17
    • 2021-02-04
    • 2017-10-07
    相关资源
    最近更新 更多