从一个Java基接口开始,我希望其他人能够直接或间接地扩展此接口,并将bean属性和行为添加到它作为插件系统。
然后,在运行时,在用户计算机上,我会找到所有这些接口并生成一个实现它们的大型类。 bean属性所需的字段将自动生成,而接口中定义的行为将实现为辅助类的静态方法(由插件开发人员创建),该方法将适当的接口作为第一个参数,因此实现interface方法将委托给静态方法,将“this”作为第一个参数传递。
这类似于Scala如何实现它的特性。
我看到了3种方法:
选项1是最简单但效率最低的,因此我想要一个更好的解决方案。选项2会给我一个有效的实现,但是相当丑陋。
虽然我已经看过几个可以执行选项3的库,但它们似乎都要求我首先学习Java的汇编语言,这是一个非常耗时的活动,最后几乎没有什么好处。
由于我不想学习任何汇编程序,JVM或其他,我最好选择2,或者有没有我使用JVM汇编程序可以生成动态代理的库?
答案 0 :(得分:2)
看看Javassist。有了它,您可以使用直接API对类进行运行时更改。你不需要知道java“黑魔法”来使用它。
答案 1 :(得分:1)
使用BCEL时,您不必了解java汇编程序。乐于this proxy。