我想創建一個具有兩個泛型類型的對象,但是在某些地方只有一個給定的泛型類型。在這些情況下,第二種類型並不重要,所以我希望能夠給出一個選項來創建只有一個泛型類型的類,而另一個泛型類型默認設置爲Object,看起來像(在C++風格):在Java中爲一個類創建默認泛型
public class myClass<T,O=Object> {...
}
因爲我知道有沒有默認在Java中的價值觀,我不希望有默認類型,但在那裏創造一些類似的東西(也許類覆蓋)的任何方式?
我想創建一個具有兩個泛型類型的對象,但是在某些地方只有一個給定的泛型類型。在這些情況下,第二種類型並不重要,所以我希望能夠給出一個選項來創建只有一個泛型類型的類,而另一個泛型類型默認設置爲Object,看起來像(在C++風格):在Java中爲一個類創建默認泛型
public class myClass<T,O=Object> {...
}
因爲我知道有沒有默認在Java中的價值觀,我不希望有默認類型,但在那裏創造一些類似的東西(也許類覆蓋)的任何方式?
創建一個子類似乎是一個開銷,我會使用static factory method。
public class MyClass<T, O> {
...
<T> public static MyClass<T, Object> create(...)
...
}
你可以在這裏使用通配符。例如,'?擴展對象「而不是」對象「。稍後,您可以將代碼(如果有必要)更改爲'?擴展String'而不會破壞現有的客戶端。 – emory 2012-01-12 23:52:35
完成此操作的典型方法是繼承「myClass」。
也就是說,假設你有
public class MyClass<T, O>
{}
你讓一個子類
public class DefaultMyClass<T> extends MyClass<T, Object>
{}
這可能不是你想要的優雅,但它確實做到這一點的唯一方法。
重複:http://stackoverflow.com/questions/6101568/java-how-to-set-a-default-for-t-in-someclasst – Tom 2012-01-12 20:52:35