2013-06-26 50 views
6

直接從this Java教程:泛型方法:靜態與非靜態

對於靜態泛型方法,類型參數部分必須與方法的返回類型之前出現 。

非靜態泛型方法是不是真的?如果不是什麼的非靜態泛型方法的語法?提前致謝。

回答

10

用於聲明非靜態的通用方法的語法是一樣的靜態方法,只是不static關鍵字:一般類型參數被放置在返回類型之前。

class Example { 
    public <E> void method(E param) { } 
} 

非靜態方法也可以使用封裝類的一般類型參數,像下面。這些不被視爲通用方法;一個generic method is one that declares type parameters

class Example<T> { 
    // Not a generic method! 
    public void method(T param) { } 
} 
+1

「非靜態泛型方法可能使用封閉類的泛型類型參數。然後他們不是*通用方法*。 http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.4.4 – newacct

+0

謝謝@newacct,我對泛型方法的定義感到困惑。 – Joni

7

對於任何通用方法都是如此。

public <T> T f() { 
    return this.<T> f(); 
} 
+0

你應該*真的*在這裏得到一個警告,因爲你實際上隱藏''''T' – Eugene

2

這種說法是所有通用的方法一樣,因爲這是一個通用的方法非常清晰 - 一個generic method是一個聲明類型參數。