0
在libgdx中,您可以使用抽象類Pool
輕鬆創建池。 既然是你這樣的構造,當它需要以匿名方式重寫它的方法的抽象類:集合中的通配符構造函數
public Pool<String> pool = new Pool<String>() {
@Override
protected String newObject() {
return new String();
}};
什麼我想現在要做的是把一個通配符延伸一個抽象的BaseClass像通用類型T這個:
protected static Pool<? extends GameCommand> commandPool = new Pool<? extends GameCommand>() {
@Override
protected <T extends GameCommand> newObject() {
return new T();
}
};
但它不起作用。我怎麼才能得到它?
重寫newObject()時需要插入什麼樣的類型?
編輯: 池引用是這樣的抽象方法:
abstract public class Pool<T> {
(...)
abstract protected T newObject();
(...)
}
你的第一個代碼本身將無法編譯。你嘗試過嗎? –
它不會因爲你不能從給出泛型類型T獲得構造函數。我會使用類似反射的東西來訪問構造函數。 –
您可能需要查看[Abstract Factory](http://en.wikipedia.org/wiki/Abstract_factory_pattern)和[工廠方法](http://en.wikipedia.org/wiki/Factory_method_pattern)設計模式到開始尋找替代解決方案。 –