這對我來說很難說出問題,所以讓我解釋一下。獲取給定超類的子類的靜態變量
我有一個抽象類Entity
和子類House
和Warehouse
。每個子類具有相同的具有不同值的靜態變量。
當我在遊戲中按下某個按鈕時,會創建一個Action
,它指定將哪個實體的子類創建並放置在世界中。我想編寫一個通用的方法來使用其子類化的靜態變量向世界放置一些Entity
。
我有一個類PlaceEntityAction
,當鼠標點擊時,適當的實體將被放置,假設條件是正確的。我怎樣才能通過我想要放置到這個動作的類,所以它可以與任何通用的Entity
?
下面是一些簡單化代碼:
if (mousePressed)) {
if (some conditions are true) {
int ex = x pos
int ey = y pos
if (world.player.haveFunds(e.COST_ENERGY, e.COST_MONEY,
e.COST_RESOURCE)) {
if (world.places[ex][ey] == 0) {
world.entities.add(e);
world.player.addEnergy(-e.COST_ENERGY);
}
}
}
}
所以基本上我怎麼可以得到e
是我傳給因爲COST_MONEY行動等無論子類是靜態的,應該由類,而不是訪問一個東西?
我真的很努力地表達我想要的東西。也許有人可以破譯這個或提供一些關於我的問題的其他見解。如果您願意,我可以提供任何其他必要的信息。
編輯:
e
是取其子我一個基於ID的系統上以前初始化的實例,但我不喜歡這種方法。
你的例子不是很清楚。例如在你的代碼中* e *是什麼? – Markus
請更清楚,幫助我們理解。 – NINCOMPOOP
您正在尋找[工廠模式](http://en.wikipedia.org/wiki/Factory_method_pattern) –