我正在开发一个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. 有什么办法让现有类型实现一个接口?
- 5. WCF接口没有实现
- 6. Java中的ArrayList没有实现Collection接口的方法?
- 7. 有没有办法从现有的类创建接口?
- 8. 有没有在intellij中实现接口方法的捷径?
- 9. Qt插件:有没有办法列出插件实现的所有接口?
- 10. 在没有创建实现的情况下实现接口(动态代理?)
- 11. 动态加载Java接口的实现
- 12. 有没有办法在表之间动态连接?
- 13. 有没有办法让@ModelAttribute动态?
- 14. 有没有办法在VBA中连接?
- 15. 在Scala中实现Java接口方法
- 16. 实现接口在Java中
- 17. 在java中实现接口
- 18. 有没有办法在GDI +中实现图层?
- 19. 有没有办法在iOS 5中实现可缩放的UIPageViewController?
- 20. 有没有办法在C#中实现“void func(out params object [] parameters)”#
- 21. 有没有办法在Qt4中实现OnReady()回调?
- 22. 有没有办法在Pymunk中实现静摩擦
- 23. 有没有办法在Firebase中实现ForEach?
- 24. 有没有办法在HTML中实现6点按钮?
- 25. 有没有办法在C#中实现平面文本框?
- 26. 有没有办法实现两个tableview的并行滚动?
- 27. 有没有办法通过IdentityServer实现动态客户端注册?
- 28. 在java中,有没有办法检查Windows服务的状态?
- 29. 没有实现所有的接口方法。可能吗?
- 30. 没有public accessor的ActionScript3接口实现?
这不是完全清楚你在找什么。这可能是反射[代理](http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/reflect/Proxy.html)会解决你的问题? – onon15 2013-03-16 11:34:23