我有一個特徵,並從這種性狀遺傳的對象:由其名稱動態地創建一個對象(字符串)
trait MyTrait {
def method1(a: Int)
}
object MyObject extends MyTrait {
def method1(a: Int) = //....
}
假設我有只有一個對象作爲字符串(命名空間的全名+它的名字),並知道它是從MyTrait
繼承,我怎麼
- 在運行時
- 創建調用它的方法
method1
- 將其返回給調用代碼,以便其他客戶端可以使用它?
我瞭解在Scala中反映,但奇怪的是,幾乎所有的我發現了有關在運行時創建類。
UPDATE:
我在想,爲什麼不這項工作:
scala> object MyObject { def method1(a: Int) = 123456 }
defined module MyObject
scala> val cs = Class.forName("MyObject")
java.lang.ClassNotFoundException: MyObject
由於錯誤java.lang.ClassNotFoundException: MyObject
關於您的編輯:在repl會話中定義的代碼被封裝,因此[FQCN](https://en.wikipedia.org/wiki/Fully_qualified_name)[不僅僅是MyObject,而且實際上是'$ line1。$ iw。 MyObject'前綴將由REPL生成](https://stackoverflow.com/questions/7279796/scala-is-there-a-default-class-if-no-class-is-defined/7280136#7280136) –