2013-04-14 27 views
1

我想知道的輸入型我到位XXX是什麼classOf

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

什麼類型:對於我爲什麼要這麼做。我不得不使用上面的代碼註冊很多類。我想刪除調用kyro.register幾次的重複,希望能寫代碼象下面這樣:

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

另一個問題,我可以通過字符串呢?並將其轉換爲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

你可以顯示什麼'com.mypackage.class1'看起來像? 'kryo'上的'register'方法簽名是什麼? –

+0

如果'class1'是一個類的定義,我懷疑你將不得不使用EECOLOR的'Seq(classOf [com.mypackage.class1],...)。foreach(registerClass)' –

+0

@KristianDomagala創建的編輯2進一步澄清。 – RAbraham

回答

4

你可以做這樣的:

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

然後調用它像這樣:

registerClass(classOf[Int]) 
1

類型參數classOf需求是在編譯時已知。不知道你想做什麼更多,是否有任何理由,你不能使用:

def registerClass(cl:XXX) = kryo.register(cl.getClass) 
+0

編輯的問題,以幫助您瞭解我正在嘗試做什麼 – RAbraham