2012-03-18 164 views
0

我讀過關於爲什麼不能在泛型類中使用(編輯 - 泛型)(使用通用類中的類型參數)靜態方法的文章,但爲什麼你可以在非泛型類中使用靜態泛型方法?我沒有看到第二個被允許的原因,但我有點理解爲什麼第一個不是。(Java)靜態通用方法與泛型類靜態方法

+0

你的意思是抽象的嗎? – 2012-03-18 21:28:34

+0

我編輯了這個問題,sry回合。 – rubixibuc 2012-03-18 21:55:18

回答

9

爲什麼你不能有一個(編輯 - 通用)(其使用這種類型的參數從通用類)靜態方法在泛型類

這樣做的原因很簡單:類型參數與類別不相關,但與類別實例相關聯。

即,你不能這樣做

class Test<T> { 
    public static void sayHello(T t) { // T for which instance?! 
     System.out.println("Hello"); 
    } 
} 


爲什麼你再使用非通用類的靜態泛型方法?

爲什麼不呢?一個通用的方法需要的類型參數,所以如果它是靜態的或沒有,或者如果它是在類是通用的或不等等

例如,這罰款編譯沒關係:

class Test { 
    public static <T> void sayHello(T t) { 
     System.out.println("Hello " + t); 
    } 
} 

而且你會這樣調用方法:

Test.<String>sayHello("some argument"); 
    ^^^^^^^^ 
    type parameter provided at the method-call: no instance required. 
+1

爲什麼downvote?答案有問題嗎? – aioobe 2012-03-18 21:52:56

+0

根據問題中的編輯編輯答案。 – aioobe 2012-03-18 21:54:33