私は 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>