2013-05-01 62 views
4

我是Scala的新手,我將一些Java代碼轉換爲使用Jackson庫來處理JSON序列化的Scala。我在Jackson SimpleModule實現中遇到了一個問題。如何獲得scala中的java.lang.Enum類?

在Java中,我這樣做:

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

我認爲這將是在斯卡拉這樣做很容易:

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

然而,我的編譯器抱怨:

scala:class Enum需要類型參數addSerializer(classOf [Enum],new LowerEnumSerializer())

我猜測,這是因爲Java的枚舉的樣子:

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

任何想法?

EDIT

我不能使用classOf [枚舉[_]],因爲該方法addSerializer看起來像這樣:

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

編輯2 我不能使用classOf [枚舉[_ <:Enum [_]],我得到:

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

JsonSeria lizer樣子:

public class LowerEnumSerializer extends StdScalarSerializer<Enum> 
+0

如果你不關心具體參數,你爲什麼不只是說'classOf [枚舉[_]]'這是模擬java的'Enum '? – 2013-05-01 16:26:47

回答

3

如何:

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

嗯...謝謝,這似乎是在欺騙! – jgrowl 2013-05-01 16:58:38