黑马程序员技术交流社区

标题: 泛型使用 [打印本页]

作者: 黑马斯巴达    时间: 2013-1-11 23:58
标题: 泛型使用
本帖最后由 谢军 于 2013-1-12 23:24 编辑
  1. public static void main(String[] args)
  2.         {
  3.                 TreeSet<String> ts = new TreeSet<String>(new LenComparator());//<font color="#ff0000">泛型里面什么时候在什么地方用<></font>

  4.                 ts.add("abcd");
  5.                 ts.add("cc");
  6.                 ts.add("cba");
  7.                 ts.add("aaa");
  8.                 ts.add("z");
  9.                 ts.add("hahaha");


  10.                 Iterator<String> it = ts.iterator();//
复制代码
TreeSet<String> ts = new TreeSet<String>泛型里面什么时候在什么地方用<>。和下面的比较
Iterator<String> it = ts.iterator();//这个后面的方法为什么不用呢
作者: 惠晖    时间: 2013-1-12 02:16
方法调用当然不用了,  ts 代表TreeSet   调用 iterator()这个方法    只有装对象的集合 或者迭代器才用到泛型
作者: 胡勇敏    时间: 2013-1-12 08:36
ts本身就已经是一个TreeSet的实例了,而这个实例在生成的时候已经做过泛型的限定。所以ts调用iterator方法返回的类型就是它生成时限定的类型。所以不必加泛型。
作者: yuchen208    时间: 2013-1-12 13:48
Iterator<String> java.util.TreeSet.iterator()
如上:ts.iterator()是有泛型<String>


作者: 张云杰    时间: 2013-1-12 16:18
本帖最后由 张云杰 于 2013-1-12 16:23 编辑

迭代, 只是为了循环你这个泛型集合用的, 把你这个值遍历出来.. 而且泛型的好处就是 当你在循环一个集合的时候 只能固定这个类型的值来接收, 其他类型是不能接收的,  比如你泛型里加的是 String, 那么 你也只能加String 类型的值,  用迭代器遍历,而迭代器里加的就是你前面集合里的泛型, 这样才可以遍历出来...  因为泛型加了, 后面的类型都必须一样才行,   然后 返回的都是String 类型的值.. Foreach 也是一样的道理..使用泛型获取的数据的类型就是指定的类型,不用强转




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2