2011-12-05 156 views
1

我期待通過EntityManager.java,我看到<X>在java方法聲明中的含義是什麼?

public <T extends Object> T find(Class<T> type, Object o, LockModeType lmt, Map<String, Object> map); 

我從來沒有見過一個類的方法定義中<X>類型聲明。這是什麼意思?

public <T extends Object> T find(似乎它定義T將擴展另一個類。我是否理解這需要你擴展另一個對象?

+1

這就是所謂的「仿製藥」,是很多像C++模板類(但不同的)... http://docs.oracle.com/javase/tutorial/java/generics/index.html –

+0

有關通用方法的信息:http://docs.oracle.com/javase/tutorial/extra/generics/methods.html –

+0

強制性Angelika Langer鏈接:http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedMethods。 html – millimoose

回答

8
public <T extends Number> T find() 

這意味着你定義一個generic功能,其具有由T代表定義起見表示的類型的參數。 T必須是Number的子類(擴展)。該函數返回一個類型T的對象

然後你就可以調用函數那樣:

Double d = find(); 
Integer i = find(); 

但以下是編譯時錯誤:

String s = find(); //error 

因爲字符串沒有按」延長數字。

+0

我很喜歡這個答案,因爲它解釋了一些關於Java泛型的細節,比如''行爲 –

相關問題