1

我想知道我用什么类型代替 XXX

def registerClass(cl:XXX) = kryo.register(classOf[cl])

编辑:为什么我想这样做。

我必须使用上面的代码注册许多类。我想删除多次调用 kyro.register 的重复,希望编写如下代码:

 Seq(com.mypackage.class1,com.mypackage.class2,com.mypackage.class3).foreach(registerClass)

另一个问题,我可以通过 String 代替吗?并以某种方式将其转换为 registerClass 中的类?

Seq("com.mypackage.class1","com.mypackage.class2").foreach(registerClass)

编辑 2:当我编写 com.mypackage.class1 时,它表示在我的源代码中定义的任何类。所以如果我创建一个类

package com.mypackage.model

class Dummy(val ids:Seq[Int],val name:String)  

我会提供 com.mypackage.model.Dummy 作为输入所以,

kryo.register(classOf[com.mypackage.model.Dummy])

Kryo 是一个 Java 序列化库。寄存器类的签名是

register(Class type)
4

2 回答 2

4

你可以这样做:

def registerClass(cl:Class[_]) = kryo.register(cl)

然后这样称呼它:

registerClass(classOf[Int])
于 2013-04-14T18:24:12.100 回答
1

classOf需要在编译时知道类型参数。在不了解您正在尝试做什么的情况下,您是否有任何理由不能使用:

def registerClass(cl:XXX) = kryo.register(cl.getClass)
于 2013-04-14T23:08:19.260 回答