Java5.0新特性06-泛型(Generic)

原创 2012年03月31日 12:47:55

泛型generic

1.泛型的优点:

         增加可读性和稳定性

      

未使用泛型: List myIntList = new ArrayList();// 1

       myIntList.add(new Integer(0));// 2

       Integer x = (Integer)myIntList.iterator().next();// 3

使用泛型: (不需转换动作;编译器会在编译时检查类型)

List<Integer> myIntList = new ArrayList<Integer>(); // 1

      myIntList.add(new Integer(0)); // 2

       Integer x =myIntList.iterator().next(); // 3

 

2.在类中使用泛型以及定义泛型方法:

 

publicclass GenericDemo {

    publicstaticvoid main(String[] args) {

 

       //1.泛型的使用,泛型类定义

       Person<String> p = new Person<String>("god");

       System.out.println(p.getName());

      

       //2.静态方法的泛型定义

       Person.fun(new Integer(3));

      

    }

}

 

class Person <T> {

    private Tname;

   

    public Person(T name){

       this.name = name;

    }

   

    public T getName() {

       returnthis.name;

    }

   

    publicstatic <E>void fun(E e) {

       System.out.println(e.toString());

    }

}

      

3.泛型的继承:

    a.

       Object[] obj =new Object[9];

       Integer[] in = new Integer[9];

       obj = in; //可以

      

       Set <Object> objSet = new HashSet<Object>();

       Set <Integer> inSet = new HashSet<Integer>();

       objSet = inSet; //不可以的,出错

    b.

       Set <Object> objSet =new HashSet<Object>();

       Set <Integer> inSet = new HashSet<Integer>();

       //objSet = inSet; //不可以的,出错

      

       p.fun2(objSet); //可以

       p.fun2(inSet); //可以

 

       publicvoid fun2(Set <?extends Object> set) {

           System.out.println(set);

        }  

 

4. 泛型函数允许类型参数被用来表示方法的一个或多个参数之间的依赖关系,或者参数与其返回值的依赖关系。如果没有这样的依赖关系,不应该使用泛型方法

 

Add:

泛型上限:<? extends Fruit>泛型下限<? super Fruit>:

       List<? extends Fruit>所应该持有的对象是Fruit的子类,而且具体是哪一个子类还是个未知数,所以加入任何Fruit的子类都会有问题,因为如果add Apple的话,可能List<? extends Fruit>持有的对象是new ArrayList<Jonathan>()Apple的加入肯定是不行的,如果 如果add Jonathan   的话,可能List<? extends Fruit>持有的对象是new ArrayList<Jonathan的子类>()Jonathan的加入又不合法,所以List<? extends Fruit> list 不能进行add      

      而List<? super Fruit> list 表示list持有的对象是Fruit的父类,下限是  Fruit,所以list中add Fruit或Fruit的子类是没有问题的 

 

相关文章推荐

java中的<?><T><E>详解Jdk5.0新特性Generic Types (泛型)

java中的详解Jdk5.0新特性Generic Types (泛型) 1. 介绍2.定义简单Java泛型 其实Java的泛型就是创建一个用类型作为参数的类。就象我们写类的方法一样,方法是这样...

JAVA1.5新特性----泛型Generic

一、泛型是提供给Java编译器使用的,可以限定集合中的输入类型,如定义集合ArrayList ArrayList collection = new ArrayList() ----->此集...
  • dych3r
  • dych3r
  • 2011年11月14日 19:47
  • 286

Java 5.0 新特性总结 三 泛型

Java 5.0 新特性总结 三 泛型
  • tianzhw
  • tianzhw
  • 2011年01月05日 22:46
  • 418

黑马程序员——JDK5.0新特性(泛型)

泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制。 使用泛型的好处: 1.将运行时期出现的问题ClassCastException,转移到了编译时期,方便于程序员解决问...

J2SE 5.0新特性(二)泛型

Java5.0引入了一个很重要概念就是Generic(泛型),简单的说泛型的引入,可以使们更安全的使用集合类。我们知道集合(List,Set,Map)中可以存储任何类型的数据,而我们在编程中要...

JDK5.0新特性---泛型

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语...

Java基础——JDK5.0的简单新特性(静态导入、可变参数、增强型for循环、自动拆装箱)

1.静态导入 import:导入一个包中某个类或所有类 import static:导入一个类中某个静态方法或所有静态方法 import static java.lang.Math.*; ...
  • ayhlay
  • ayhlay
  • 2013年06月17日 14:09
  • 2342

JDK5一些新特性关于枚举泛型等

  • 2009年04月15日 10:31
  • 77KB
  • 下载

c#2_0的新特性泛型

  • 2011年11月09日 15:56
  • 11KB
  • 下载

黑马程序员——Java1.5新特性之泛型

---------------------- android培训、java培训、期待与您交流! ---------------------- 泛型时Java在1.5版本以后出现的新特性,侧重于解决安...
  • cds885
  • cds885
  • 2012年03月05日 11:52
  • 101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java5.0新特性06-泛型(Generic)
举报原因:
原因补充:

(最多只允许输入30个字)