0
我有一個基本問題。獲取具有另一個屬性的類的屬性
有幾個類,擴展另一個類(「技能」)。
「技能」包含了一些抽象方法,如:
public abstract int getID();
public abstract String getName();
public abstract String getDescription();
和子類:
@Override
public int getID()
{
return 69;
}
@Override
public String getName()
{
return "name";
}
@Override
public String getDescription()
{
return "description";
}
現在,讓我們說我需要得到id爲「89」的子類的描述。
是否有這樣做,比擁有一個HashMap存儲ID->類名,然後通過執行獲得類的對象更簡單的方法如下?:
Class cl = Class.forName(classname);
Object o = cl.getConstructor().newInstance();
Method m = cl.getMethod("getDescription");
return (String) m.invoke(o);
這是一個大代碼的氣味。你爲什麼要找出這樣的班級呢? – 2013-05-05 18:50:19
確實如此。這就是爲什麼我要求更好的方法。例如:一名玩家獲得一個buff。後來,我需要檢查一下,如果玩家仍然擁有這個buff,而且我只有這個ID。但考慮一下,我也可以直接存儲buff的實例.. – dr0n3 2013-05-05 19:10:11
閱讀此:http://steve-yegge.blogspot.com/2008/10/universal-design-pattern.html – 2013-05-05 19:32:31