我想知道我用什么类型代替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)
答案 0 :(得分:4)
你可以这样做:
def registerClass(cl:Class[_]) = kryo.register(cl)
然后像这样称呼它:
registerClass(classOf[Int])
答案 1 :(得分:1)
需要在编译时知道classOf
的类型参数。如果不了解您正在尝试做什么,有什么理由不能使用:
def registerClass(cl:XXX) = kryo.register(cl.getClass)