慕桂英3389331
2019-07-26 15:43:59
泛型類中的靜態(tài)方法?在Java中,我想有一些東西:class Clazz<T> {
static void doIt(T object) {
// shake that booty
}}但我明白了無法對非靜態(tài)類型T進行靜態(tài)引用我不了解基本用途之外的泛型,因此無法理解這一點。我無法在互聯(lián)網上找到有關該主題的更多信息,這沒有任何幫助。有人可以通過類似的方式澄清這種使用是否可行?另外,為什么我的原始嘗試不成功?
3 回答

慕后森
TA貢獻1802條經驗 獲得超5個贊
您不能在靜態(tài)方法或靜態(tài)字段中使用類的泛型類型參數。類的類型參數僅在實例方法和實例字段的范圍內。對于靜態(tài)字段和靜態(tài)方法,它們在類的所有實例之間共享,甚至是不同類型參數的實例,因此顯然它們不能依賴于特定的類型參數。
看起來您的問題似乎不需要使用類的類型參數。如果您更詳細地描述您想要做的事情,也許我們可以幫助您找到更好的方法。

偶然的你
TA貢獻1841條經驗 獲得超3個贊
T
在實例化類型之前,Java不知道是什么。
也許你可以通過調用來執(zhí)行靜態(tài)方法,Clazz<T>.doit(something)
但聽起來你不能。
處理事物的另一種方法是將type參數放在方法本身中:
static <U> void doIt(U object)
哪個不能讓你對U有正確的限制,但它總比沒有好....

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
我遇到了同樣的問題。我通過Collections.sort
在java框架中下載源代碼找到了我的答案。我使用的答案是將<T>
泛型放在方法中,而不是放在類定義中。
所以這有效:
public class QuickSortArray { public static <T extends Comparable> void quickSort(T[] array, int bottom, int top){//do it}}
當然,在閱讀了上面的答案后,我意識到如果不使用泛型類,這將是一個可接受的替代方案:
public static void quickSort(Comparable[] array, int bottom, int top){//do it}
添加回答
舉報
0/150
提交
取消