private List<Email> emails = new ArrayList<Email>();
...全文
1764打赏收藏
请教java中的一种定义<T>
在一本书的hibernate章节中,看到如下两个定义,有点不太明白,请教一下高手们: public class BaseDAO { } 在以上的定义中多了,这个是什么啊?是怎么意思? 在下面的另外一个定义中,多了,这是什么意思啊? private List emails = new ArrayList();
j2se5.0之前,List里面存储的数据都是Object这就造成了类型丢失。当你调用List里的数据时
不知道它的类型,加上泛型<T>之后,你可以在new的时候声明类里的类型。
private List<Email> emails = new ArrayList<Email>();
就表示List的成员都是Email类的对象
public class BaseDAO<T>
{
}
如果写成下面的这样
public class BaseDAO<T>
{
public T getTestThisObject(T obj) {
return obj;
}
}
当然这是一个SB写法但是可以说明问题
如果你声明一个 dao
BaseDAO<String> dao = new BaseDAO<T>(String);
的话你就把T定义成String型了
那么 getTestThisObject所接受的参数和返回值都是String
如果你指定Integer那就是Integer
如果你指定是Email那就是Email