2012-03-25 41 views
1

我正在使用Jerkson,我需要检查给定的类是否可以序列化。 Java版本只需要一个类,但jerkson这样做:Scala清单和实例

def canSerialize[A](implicit mf: Manifest[A]) = mapper.canSerialize(mf.erasure) 

鉴于我有一个实例,我该如何调用它?我几乎试过

canSerialize[ClassManifest.fromClass(foo)] 

但它不工作。我想知道为什么在jerkson的家伙不能通过简单的做到这一点:canSerialize(Class [_])...

任何想法,我该如何调用它?

编辑:

我用固定的:

canSerilialize(Manifest.classType(foo.getClass)) 
+0

添加更多的上下文:如果我尝试使用canSerialize(ClassManifest.fromClass(foo)),我得到以下内容: type mismatch;发现:scala.reflect.ClassManifest [?0]其中类型?0 <:com.acme.domain.Foo必需:Manifest [?] – 2012-03-25 15:18:10

回答

3

如何:

canSerialize[Foo] 

编译器可以自动生成清单给你(如果它在上下文中足够的类型信息)

既然斯卡拉2.8.0 canSerialize可以写v ia 上下文绑定。请参阅more

+0

问题是,我不知道类型提前。我试过ClassManifest.fromClass(foo.getClass),但它不工作。其他想法? – 2012-03-25 15:12:27

0

如果您事先不知道该类,则始终可以将清单作为参数传递,即应该可以工作:canSerialize(Manifest.classType(foo.getClass))

+0

这实际上是我在这个问题上尝试过的,它不起作用。 – 2012-03-25 14:32:47

+0

啊,是的,方法名称错了。固定。 – 2012-03-28 17:52:09