我有一個關於如何動態創建類(不是實例)的問題。 在我的項目中,我需要根據配置文件編寫幾個類似的類。 對於〔實施例,有這樣的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