java中,尖括号的强制转换问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 03:23:49
public static void main(String[] args) {
// FirstLevelTitle f1 = new
// FirstLevelTitle(0,"房产","管理员",Date.valueOf("2003-8-7"));
// FirstLevelTitle f2 = new
// FirstLevelTitle(0,"汽车","管理员",Date.valueOf("2004-8-7"));
//
FirstLevelTitleDaoImpl dao = new FirstLevelTitleDaoImpl();
// dao.addTitle(f1);
// dao.addTitle(f2);
//

Collection<FirstLevelTitle> c = dao.findAllTitle();
Iterator<FirstLevelTitle> it = c.iterator();
while (it.hasNext()) {
FirstLevelTitle f = it.next();

System.out.println(f.getId() + "\t" + f.getTitle());

其中的Collection<FirstLevelTitle> c = dao.findAllTitle();
Iterator<FirstLevelTitle> it = c.iterator();

是强制转换吧?其中的尖括号是怎么用法?能否高手解答一下详细些,谢谢

Collection<FirstLevelTitle> c = dao.findAllTitle();
Iterator<FirstLevelTitle> it = c.iterator();
这样会强制你加入集合的只能是FirstLevelTitle对象
而要从集合里取出数据时,取出来的就是FirstLevelTitle对象
无须再强行转换成FirstLevelTitle

不是强制转换,是泛型指定。
像Collection类,List类,都可以这样用:
List<Object> list = new List();
这表示这个list只能存Object类,当你取出一个object的时候,就是Object类型,不用再转了。

这是泛型,通俗来讲就是只能存特定类型的元素的集合,泛型集合中不能添加泛型规定的类型及其子类型以外的对象。

<FirstLevelTitle> 表示 这个变量中 只能 存放 该类型的 实例.

是泛型
通常很多集合类 都会以Object做存储对象
通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。

这个东西叫泛型,JDK5.0才出现的新特性