我想做Java中的以下内容:Java的动态实现抽象方法
我有一个字符串(任何地方1和10 000)的集合,每个字符串包含不同的方法体(都写在Java代码中)为同一个类的抽象方法。 例如:
string1= "int a=1;"
string2="System.out.println(\"HelloWorld\");"
...
每个字符串可能是以下的抽象方法的实现:
abstract class FOO{
public abstract void doSomething();
}
对于每一个我想产生FOO的实例使用字符串。
我不太知道什么是最好的方式去: 我在网上搜索,并用这些建议提出了:
- 使用Java编译器6 API生成的.class文件和加载它们
- 使用字节码操作库像CGLIB,修改编译代码
是否有任何其他建议,因为这些看起来有点复杂(至少我)......
感谢您的帮助
编辑:
我可能会去我的问题的错误的方式。下面是我最终想要实现:
我有代表在一棵树上
public interface Node{
public <T> void process(T input);
/* ...其他方法不相关的我的问题... */ 一个节点的接口}
当您向节点提供T的实例时,它会执行某些操作(有些可能需要访问节点的其他方法),并将其传递给子节点。
问题是(程序规范):程序从文本文件中读取和构建节点,其中包括方法体(这些体在java中)。然后构建树并返回它。
我觉得要做到这一点,我必须以某种方式为文本文件中提供的每种方法生成Node的实现。我可能是错的,而且有可能是一个更好的办法...
还有其他**,甚至mo重复**选项。 Java不是一种解释型语言,所以这不能轻易完成。 –
为什么你有多达10,000个方法体作为文本?为什么不把它们作为编译代码? –
这可能是一个合法的问题,但** ......我认为真正的问题发生在包含代码的“字符串集合”起源之前的某个时间轴上。 – phineas