泛型
2014-05-01 10:55
141 查看
泛型:JDK1.5版本以后出现新特性。用于解决安全问题,是一个类型安全机制。
泛型概述:
在使用java提供的对象时,什么时候写泛型呢?
泛型通常在集合框架中很常见,只要见到<>就要定义泛型,其实<> 就是用来接收类型的,当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
好处
1.将运行时期出现问题ClassCastException,转移到了编译时期。
方便于程序员解决问题。让运行时问题减少,安全。
2,避免了强制转换麻烦。
泛型格式:
通过<>来定义要操作的引用数据类型。
泛型定义在类上: class Demo<Q>
泛型定义在方法上:public <Q> static void demo(){}
泛型定义在接口上:Iterface Demo<Q>
泛型类:
类上定义的泛型,在整个类中有效
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候。
泛型方法:
情况一:类上定义了泛型(有局限性)
类上定义的泛型,在整个类中有效。如果被方法使用,
那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。
情况二:类上没定义泛型(这种更灵活)
如果让不同方法可以操作不同类型数据,而且数据类型还不确定,类上没定义泛型时,
可以直接将泛型分别定义在方法上。
注意:
静态方法不可以访问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
泛型的限定:
? 通配符。也可以理解为占位符。
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限
代码示例:
泛型概述:
在使用java提供的对象时,什么时候写泛型呢?
泛型通常在集合框架中很常见,只要见到<>就要定义泛型,其实<> 就是用来接收类型的,当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
好处
1.将运行时期出现问题ClassCastException,转移到了编译时期。
方便于程序员解决问题。让运行时问题减少,安全。
2,避免了强制转换麻烦。
泛型格式:
通过<>来定义要操作的引用数据类型。
泛型定义在类上: class Demo<Q>
泛型定义在方法上:public <Q> static void demo(){}
泛型定义在接口上:Iterface Demo<Q>
泛型类:
类上定义的泛型,在整个类中有效
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候。
泛型方法:
情况一:类上定义了泛型(有局限性)
类上定义的泛型,在整个类中有效。如果被方法使用,
那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。
情况二:类上没定义泛型(这种更灵活)
如果让不同方法可以操作不同类型数据,而且数据类型还不确定,类上没定义泛型时,
可以直接将泛型分别定义在方法上。
注意:
静态方法不可以访问类上定义的泛型。
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
泛型的限定:
? 通配符。也可以理解为占位符。
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限
代码示例:
/** 泛型演示 */ import java.util.*; class GenericDemo { public static void main(String[] args) { ArrayList<Person> al = new ArrayList<Person>(); al.add(new Person("zhangsan")); ArrayList<Student> al1 = new ArrayList<Student>(); al1.add(new Student("lisi")); al1.add(new Student("wangwu")); al.addAll(al1); for (Iterator<Person> it = al.iterator();it.hasNext() ; ) { System.out.println(it.next().getName()); } } } class Person { private String name; Person(String name) { this.name = name; } public String getName() { return name; } public String toString() { return "person :"+name; } } class Student extends Person { Student(String name) { super(name); } }
相关文章推荐
- Java5泛型的用法,T.class的获取和为擦拭法站台
- 黑马程序员_Java高新技术_泛型
- 泛型
- C#中泛型
- Java 泛型
- java泛型 7 泛型的基本介绍和使用
- 用泛型的IEqualityComparer接口去重复项 .
- 15章泛型一
- Java 泛型
- 【转】java泛型
- 05.C#泛型类型(三章3.1-3.2)
- [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性
- 理解泛型 从需求演变开始
- ArrayList 类和List泛型集合
- 泛型
- thinking in java笔记 15 泛型
- 黑马程序员_泛型
- 深入理解 Java 泛型
- 如何将XML与O“.NET研究”BJECT进行相互转换(泛型以及通用方法)
- 【设计模式】面向对象小结——接口、泛型和委托