2
trait T
class C extends T
編譯成.class文件。使用-cp <...>
運行scala可以使用T
。然後加載使用反射類C:
val loader = ScalaClassLoader fromURLs (/* List[URL] */)
val anyC = loader.tryToInitializeClass("C") getOrElse (/* throw something */)
val classC = anyC.asInstanceOf[Class[T]]
如何我也能投射出classC.newInstance
到T
型像
val objC = classC.newInstance.asInstanceOf[T]
// yields java.lang.ClassCastException: C cannot be cast to T
那麼,有什麼方法可以「合併」這兩個類加載器嗎? – classicalist
這真的取決於你想要做什麼。我編輯了答案以顯示一個選項。 –
是的,我想檢查用戶是否實現了提供的「特質」。我找到了方法 'val loader = ScalaClassLoader fromURLs(/ * List [URL] * /,classOf [T] .getClassLoader)' 就是這樣。感謝您的幫助! – classicalist