自我介绍--泛型(Generic)

大家好:


我的中文名字叫:泛型
英文名字叫做:Generic
     我来自JDK1.5大家庭的一位新成员,我的本质就是参数化类型,就是说我所操作的数据类型被定义为一个参数。这个数据类型可以使用在类、接口和方法中,这样就可直呼其大名泛型类、泛型接口盒泛型方法啦。
下面我来说说我的作用吧:
   我主要是用来帮助javac编译器的,可以帮助限定集合的输入类型,使编译器挡住源程序非法输入。便器编译带类型说明的集合时,编译器会去除类型信息,使程序的运行不受影响。

在获取类时即可知道其数据类型这样我又为编译器解决了强制转换的烦恼
注:泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率
我可是个有原则的人,要找我帮忙违反这几条规则我可不忙:

1.泛型的类型参数只能是类类型的(包括自定义类),不能是简单类型。
2.同一个泛型可以对相应多种不同的版本(因为参数类型不能确定),不同版本的泛型类实例是不兼容的。
3.泛型的类型参数可以有多个。
4.泛型的参考类型还可以使用extends语句,如< T extends superclass > 习惯上称作为“有界类型”。
5.泛型的参考类型还可以使用通配符,例如Class< ?> classType = Class.forName("java.lang.String");

好啦,到这里我的基本简历就介绍完了,下面就给你们再讲一个真是滴故事吧:

class Gen<T> {
  private T ob; //定义泛型成员变量
  public Gen(T ob) {
  this.ob = ob;
  }
  public T getOb() {
  return ob;
  }
  public void setOb(T ob) {
  this.ob = ob;
  }
  public void showType() {
  System.out.println("T的实际类型是: " + ob.getClass().getName());
  }
  }
  public class GenDemo {
  public static void main(String[] args){
  //定义泛型类Gen的一个Integer版本
  Gen<Integer> intOb=new Gen<Integer>(88);
  intOb.showType();
  int i= intOb.getOb();
  System.out.println("value= " + i);
  System.out.println("----------------------------------");
  //定义泛型类Gen的一个String版本
  Gen<String> strOb=new Gen<String>("Hello Gen!");
  strOb.showType();
  String s=strOb.getOb();
  System.out.println("value= " + s);
  }
  }



谢谢大家的认真听取我的自我介绍,十分感谢!!

参考文献:  
1.360百科http://baike.so.com/doc/788725.html
2.heima培训教程





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章