2012-01-12 72 views
3

我想創建一個具有兩個泛型類型的對象,但是在某些地方只有一個給定的泛型類型。在這些情況下,第二種類型並不重要,所以我希望能夠給出一個選項來創建只有一個泛型類型的類,而另一個泛型類型默認設置爲Object,看起來像(在C++風格):在Java中爲一個類創建默認泛型

public class myClass<T,O=Object> {... 
} 

因爲我知道有沒有默認在Java中的價值觀,我不希望有默認類型,但在那裏創造一些類似的東西(也許類覆蓋)的任何方式?

+3

重複:http://stackoverflow.com/questions/6101568/java-how-to-set-a-default-for-t-in-someclasst – Tom 2012-01-12 20:52:35

回答

4

創建一個子類似乎是一個開銷,我會使用static factory method

public class MyClass<T, O> { 
    ... 

    <T> public static MyClass<T, Object> create(...) 
    ... 
} 
+0

你可以在這裏使用通配符。例如,'?擴展對象「而不是」對象「。稍後,您可以將代碼(如果有必要)更改爲'?擴展String'而不會破壞現有的客戶端。 – emory 2012-01-12 23:52:35

0

完成此操作的典型方法是繼承「myClass」。

也就是說,假設你有

 

public class MyClass<T, O> 
{} 
 

你讓一個子類

 

public class DefaultMyClass<T> extends MyClass<T, Object> 
{} 
 

這可能不是你想要的優雅,但它確實做到這一點的唯一方法。