我正在開發一個Minecraft mod,允許使用Lua創建Mod。我希望用戶能夠使用他們想要的接口創建TileEntities。目前,我正在使用調用註冊Lua文件功能的Base TE,但這不允許他們製作庫存和外圍設備。有沒有辦法在Java中動態實現接口?
0
A
回答
5
是的。您可以通過ClassLoader.html#loadClass(...)加載界面和使用Proxy#newProxyInstance(...)
示例實現:
ClassLoader cl = getClass().getClassLoader();
Class<?> desiredInterface = cl.loadClass("SomeInterface");
Object proxy = Proxy.newProxyInstance(
cl,
new Class<?>[]{desiredInterface},
new InvocationHandler() {
@Override
Object invoke(Object proxy, Method method, Object[] args) {
//call Lua with method name and args, return answer
}
});
+0
有沒有辦法讓返回的對象擴展另一個類? – Rule 2013-03-16 13:34:28
+0
嗯,是的,但AFAIK不是沒有字節碼操作。看看http://cglib.sourceforge.net/,http://asm.ow2.org/,http://www.csg.is.titech.ac.jp/~chiba/javassist/,http: //commons.apache.org/proper/commons-bcel//index.html。 – 2013-03-18 09:17:59
相關問題
- 1. 有沒有辦法在Ruby中強制實現接口方法?
- 2. 有沒有辦法確保實現接口的類實現靜態方法?
- 3. Java:沒有接口實現?
- 4. 調用方法沒有在Java中實現的接口的接口中定義
- 5. 有什麼辦法讓現有類型實現一個接口?
- 6. WCF接口沒有實現
- 7. 有沒有辦法在java中循環動態創建組件?
- 8. Java中的ArrayList沒有實現Collection接口的方法?
- 9. 有沒有辦法從現有的類創建接口?
- 10. 有沒有在intellij中實現接口方法的捷徑?
- 11. Qt插件:有沒有辦法列出插件實現的所有接口?
- 12. 有沒有辦法下載所有的Java EE接口?
- 13. 在沒有創建實現的情況下實現接口(動態代理?)
- 14. 動態加載Java接口的實現
- 15. 有沒有辦法在表之間動態連接?
- 16. 有沒有辦法從純Java實現引導Chef節點?
- 17. 有沒有辦法讓@ModelAttribute動態?
- 18. 我的類實現與方法的接口。沒有實現,但沒有錯誤
- 19. 有沒有辦法在VBA中連接?
- 20. 有沒有辦法在ES6/Node 4中創建接口?
- 21. 在Scala中實現Java接口方法
- 22. 有沒有辦法在c#中動態獲取方法名?
- 23. 在java中實現接口
- 24. 實現接口在Java中
- 25. 有沒有辦法在Firebase中實現ForEach?
- 26. 有沒有辦法在C#中實現平面文本框?
- 27. 有沒有辦法在iOS 5中實現可縮放的UIPageViewController?
- 28. 有沒有辦法在Pymunk中實現靜摩擦
- 29. 有沒有辦法在C#中實現「void func(out params object [] parameters)」#
- 30. 有沒有辦法在Qt4中實現OnReady()回調?
這不是完全清楚你在找什麼。這可能是反射[代理](http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/reflect/Proxy.html)會解決你的問題? – onon15 2013-03-16 11:34:23