這裏有一個簡單的例子:Java泛型 - 何時需要參數化?
class World<S extends Sprites, B extends Bodies> {
// Both of these have a problem...
static World world = null; // "World is a raw type. References to generic type
// World<BOD,SPRT> should be parameterized"
static World<S, B> world = null; // "Cannot make a static reference to the non-static type S
// "Cannot make a static reference to the non-static type B
// The following is allowed but looks ugly/fishy to me
static World<?, ?> world = null; //
如果你想知道,我想獲得一個單例模式去。挑戰在於這個類在一個單獨的包GAME中進行了擴展,並且我不能讓這個包(MODEL)對該GAME有任何依賴。因此構造函數必須是MODEL。因此,構造函數可以將單例對象存儲在MODEL中該類的靜態變量中。
static World<?, ?> world = null;
是否確實醜陋在你看來,有沒有更好的方法來解決這個問題?謝謝!
請記住,Java有類型擦除;無論有多少種不同的方式來實例化World類(因爲它們都與運行時一樣共享相同的類),只有一個靜態的'world'變量。 – 2012-02-17 20:02:55
我不會讓世界成爲單身/靜態。當你在兩個世界存在的情況下寫一個不同的遊戲時會發生什麼?無論如何,在我看來,這取決於你的'GAME'包中的任何內容,以確保_it_只創建一個'World'。這在現在的方式回答你的問題,它避免了這個問題。 – 2012-02-17 20:33:48
好點...其實我的GAME包實現了一個傳統的單身人士,以確保只有一個... – pitosalas 2012-02-18 22:44:57