2011-12-05 120 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泛型的细节,比如''行为 –

相关问题