2
代碼示例說明是我的目標爲:在斯卡拉在運行時多態性獲取類的實例
import scala.reflect.ClassTag
class C[A](implicit ct: ClassTag[A]) {
def inst: A = ct.runtimeClass.newInstance.asInstanceOf[A]
}
val c = new C[String]
c.inst
//=> res8: String = ""
// So far so good
val className = "C"
val typeParam = "String"
如何使用className
和typeParam
在運行時獲得的C[String]
一個實例(使用Scala的2.11.5
)?
負責查詢分佈式系統的類。查詢進來後,根據查詢動態確定類,然後將查詢分發給'N'個節點,確定的類編碼爲'String'。每個節點都應該實例化這個類。部分挑戰在於將其用於使用'className:String'的現有系統。謝謝你的回答,我會試試看! – devth 2015-02-12 03:03:14
一個問題:由此產生的實例類型爲「Any」,所以我無法在其上調用我的「inst」方法。我嘗試了各種'asInstanceOf'咒語,但沒有運氣。 – devth 2015-02-12 16:32:05
你是什麼意思,類型爲「任何」? *靜態類型*當然是'Any',但是沒有辦法繞過:如何從*動態類名*獲得* static *類型?如果你確定有這樣一個'inst'方法(通過名字),你可以再次使用反射來調用它:'x.getClass.getMethod(「inst」)。invoke(x)'(''x''是結果我的答案中的咒語)。 – sjrd 2015-02-12 16:45:28