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 jdk5.0新特性——泛型

/** * @author StormWangxhu * @version 创建时间:2017年11月6日 下午8:27:45 * */泛型集合可以存储任何类型的对象,但是当把一个对象存入集合后,集合...
  • qq_36734216
  • qq_36734216
  • 2017年11月06日 20:51
  • 89

java5.0的新特性总结

我把java5.0产生的新特性总结一下,方便其他java爱好者的学习了解 java5.0中,主要的新特性主要包括1、泛型 2、增强的for循环3、自动装箱和自动拆箱4、类型安全的枚举 5、可变长度参数...
  • cuixinle
  • cuixinle
  • 2014年01月10日 13:47
  • 812

JDK5新特性之泛型

概述 泛型:是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。参数化类型,把类型当作参数一样的传递。 格式: 此处的数据类型只能是引用...
  • gafeng123456
  • gafeng123456
  • 2016年02月29日 12:38
  • 464

Java 5.0 的新特性

2004年下半年,Sun公司发布了开发代号为“Tiger”的J2SE 5.0,揭开了Java发展的一个重要里程碑。在过去的Java升级中更多的是进行一些库函数的改进,而这次则直接从语法层面上进行了增强...
  • baobao8505
  • baobao8505
  • 2006年04月27日 16:56
  • 1532

我喜爱的Java 5.0的五个特性

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明作者:David Flanagan;xml1123原文地址:http://www.onjava.com/pub/a/o...
  • baobao8505
  • baobao8505
  • 2006年04月27日 16:58
  • 1068

Java-1.5新特性之泛型

一、泛型由来 Java语言类型包括八种基本类型(byte short int long float double boolean char)和复杂类型,复杂类型包括类和数组。 早期Java版本(1.4...
  • zmken497300
  • zmken497300
  • 2016年07月11日 11:53
  • 691

黑马程序员——泛型(Generic)的理解和使用

黑马程序员——泛型(Generic)的理解和使用泛型的定义:Jdk1.5以后出现的一种对Java语言类型的一种扩展,以支持创建可以按类型进行参数化的类,可以把类型参数看作是使用参数类型指定的类型占位符...
  • u010743397
  • u010743397
  • 2015年07月18日 01:26
  • 507

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

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

Java泛型(Generic)理解之一:T和?的区别

1) 使用T赋值的都是为具体类型.,我们用通配符(?)代替了:    ? 叫有限制的通配符, 用于赋值的类型不确定的时候。     2) 观察如下代码: a.package genericTest; ...
  • cloudeagle_bupt
  • cloudeagle_bupt
  • 2016年11月23日 20:35
  • 794

C++14尝鲜:Generic Lambdas(泛型lambda)

C++14尝鲜:Generic Lambdas(泛型lambda)
  • zwvista
  • zwvista
  • 2014年11月15日 12:15
  • 2886
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java5.0新特性06-泛型(Generic)
举报原因:
原因补充:

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