我有一个关于如何动态创建类(不是实例)的问题。 在我的项目中,我需要根据配置文件编写几个类似的类。 对于〔实施例,有这样的JSON:有没有办法动态创建类(不是实例)?
{
{
"lang": "python",
"file": "class1.py",
"args": ["arg1"]
},
{
"lang": "python",
"file": "class2.py"
"args": ["arg2"]
}
}
随后,我需要以下两个Java类写:
的Class1:
public class Class1 extends ShellBolt implements IRichBolt {
public Class1() {
super("python", "class1.py");
}
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields(arg1));
}
@Override
public Map<String, Object> getComponentConfiguration() {
return null;
}
}
等级2:
public class Class2 extends ShellBolt implements IRichBolt {
public Class2() {
super("python", "class2.py");
}
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields(arg2));
}
@Override
public Map<String, Object> getComponentConfiguration() {
return null;
}
}
但是,如果JSON文件添加了新对象:
{
"lang": "python",
"file": "class3.py"
"args": ["arg3"]
}
我需要编写一个具有类似结构的新类。 那么,有没有办法动态创建类? 我知道也许cglib可能有效,但我不知道如何在我的情况下使用它。 谢谢。
为什么你需要创建这些类?为什么仅仅只有一个类从配置文件中封装JSON对象并具有根据该对象的内容行为的方法是不够的? – Philipp
有像[BCEL](http://commons.apache.org/proper/commons-bcel/)这样的库,允许您在运行时创建类 –
这是一篇讨论类似问题的文章:http:// www .javaranch.com/journal/200711/Journal200711.jsp#a4 – jayeff