黑马程序员技术交流社区

标题: 关于泛型的问题 [打印本页]

作者: 张源锋    时间: 2013-4-1 17:58
标题: 关于泛型的问题
本帖最后由 无奈№追夜 于 2013-4-1 19:36 编辑
  1. public interface  Iterator<T>
复制代码
里面的T是什么,是一个字符,还是一个对象?????

作者: 黑马李杰    时间: 2013-4-1 18:04
T是一个对象类型,你可以把它看成是Object类型。
作者: 袁梦希    时间: 2013-4-1 18:14
泛型:jdk1.5版本以后出现的一个安全机制。表现格式:< >
好处:
1:将运行时期的问题ClassCastException问题转换成了编译失败,体现在编译时期,程序员就可以解决问题。
2:避免了强制转换的麻烦。
只要带有<>的类或者接口,都属于带有类型参数的类或者接口,在使用这些类或者接口时,必须给<>中传递一个具体的引用数据类型。

作者: 齐静    时间: 2013-4-1 18:16
<T>是用来接收类型的,将集合中要存储的数据类型作为参数传递到<>即可
作者: 刘焕新    时间: 2013-4-1 20:03
一般地,给一个类定义泛型时,使用一对尖括号<>,尖括号里注明的是什么,就是指什么类型;
如果这样的类型根本不存在,那么这个泛型类型指的就是任意类型。
如:
class Test<String> {...} 意思是给Test类指定一个泛型,泛型的类型是String类型。
class Test<Date>{...} 意思是给Test类指定泛型,泛型的类型是Date类型。
class Test<U>{...} 意思是给Test类指定泛型,泛型的类型是任意类型。
  1. public interface  Iterator<T> {...}
复制代码
以上是代表你给一个名为Iteractor的接口的定了泛型,因为不存在名为T的类,所以,这泛型的类型就是指任意类型。
  1. import java.util.Date;

  2. //定义个接口,并给它定义泛型:x
  3. interface Dog<X> {
  4.         public void say(X x);
  5. }

  6. public class HotDog<X> implements Dog<X> {
  7.         
  8.         public static void main(String[] args) {
  9.                 //创建一个实例对象,并指定一个具体的泛型类型:String
  10.                 HotDog<String> h1 = new HotDog<String>();
  11.                 String o = new String("wang wang");
  12.                 h1.say(o);
  13.                
  14.                 //创建另个实例对象,并指定另一个具体的泛型类型:Date
  15.                 HotDog<Date> h2 = new HotDog<Date>();
  16.                 Date d = new Date();
  17.                 h2.say(d);
  18.         }

  19.         @Override
  20.         public void say(X u) {
  21.                 System.out.println(u);
  22.                
  23.         }
  24. }
复制代码

作者: 王川    时间: 2013-4-2 21:59
是表示类型的,如果你实现了这个接口,可以同时给定这个类型,这样便于编译器在编译阶段对你的对象进行检查,如果你迭代的对象不是你定义的这个类型,编译器会报错




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