是否可以使用反射從Java引用Scala對象類?反映來自Java的Scala對象
爲了說明我的意思,這是這樣做的(假設MyClass的是Scala的對象)的Scala代碼:
val runtimeMirror = universe.runtimeMirror(getClass.getClassLoader)
val module = runtimeMirror.staticModule("MyClass")
val obj = runtimeMirror.reflectModule(module)
val realObject: MyInterface = obj.instance.asInstanceOf[MyInterface]
在Java中,我成功地加載的類,但我似乎無法到能夠獲得對象的實際引用;因爲它沒有公共構造函數,所以在類上調用newInstance()顯然失敗。
我已經成功通過反射得到它的構造和將其設定爲接近要解決它,但是這似乎是一個黑客對我..有一個BKM做這樣的事情?
大量的反射代碼這是否...'setAcessible(真)'是。那種你已經在使用*反射*,這已經是一個黑客 – Eugene
Scala的對象編譯爲2'.class'文件,一個只包含靜態轉發到實現(單身),稱爲'$ MODULE'等一個,內帶有'$'的類。看到這個答案http://stackoverflow.com/a/12785219/4496364。我想你想要'MODULE $'實例... –
@Eugene然而,'setAccessible'的這種特殊用法會給出錯誤的結果。 –