4

私は Scala を初めて使用し、Jackson ライブラリを使用して JSON シリアル化を処理する Java コードを Scala に変換しています。Jackson SimpleModule の実装で問題が発生しました。

Java では、次のようにします。

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

Scalaでこれを行うのと同じくらい簡単だと思いました:

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

ただし、私のコンパイラは不平を言っています:

scala: クラス Enum は型パラメータを取る addSerializer(classOf[Enum], new LowerEnumSerializer())

これは、Java の Enum が次のようになっているためだと推測しています。

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

何か案は?

編集

addSerializer メソッドが次のようになっているため、classOf[Enum[_]] は使用できません。

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

EDIT 2 classOf[Enum[_ <: Enum[_]] は使用できません。次のようになります。

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

JsonSerializer は次のようになります。

public class LowerEnumSerializer extends StdScalarSerializer<Enum>
4

1 に答える 1