泛型的概述

泛型是一种未知的数据类型 当我们不知道使用什么数据类型的时候 可以使用泛型

泛型也可以看出是一个变量 用来接收数据类型

当我们创建集合是就确定泛型类型

使用泛型的好处

我们都知道集合中是可以存放任意对象的 只要把对象存储集合后 那么这时他们都会被提升成Object类型 当我们在取出每个对象 并且进行相应的操作 这时必须采用类型转换

创建集合不使用泛型的好处:集合不使用泛型 默认的类型就是Object类型 可以存储任意类型的数据

创建集合不使用泛型的坏处:不安全 会引发异常

代码:

public static void main(String[] args) {
Collection<Object> list = new ArrayList<>();
list.add("张三");
list.add(15);
list.add(15.0);
list.add(true);

Iterator<Object> iterator = list.iterator();
while (iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
//要求使用String类里的length方法判断长度
//向下转型
String s=(String) next;
System.out.println(s.length());
}

}

运行结果:

 报出的是类型转换异常 不能将Interger类型转变成String类型

不使用Object类型

代码:

public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王五");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
String next = iterator.next();
System.out.println(next);

String s=(String) next;
System.out.println(s.length());
}
}

运行结果

 后面的数字就是我们String的长度 因为是遍历 所以只能一个一个算长度 比如:张三 长度为2 …

泛型的定义和使用

定义一个含有泛型的类 模拟ArrayList集合

泛型是一个未知的数据类型 当我们不确定什么什么数据类型的时候 可以使用泛型

代码:

模拟集合类:

public class DemoArray<E> {
private E name;

public E getName() {
return name;
}

public void setName(E name) {
this.name = name;
}
}

测试类:

public static void main(String[] args) {
//泛型使用Integer
DemoArray<Integer> array = new DemoArray<>();
array.setName(10);
System.out.println(array.getName());
//泛型使用String
System.out.println("------------------");
DemoArray<String> array1 = new DemoArray<>();
array1.setName("张三");
System.out.println(array1.getName());
//不使用泛型 默认是Object类型
System.out.println("------------------");
DemoArray array2 = new DemoArray();
array2.setName(11);
System.out.println(array2.getName());
array2.setName("张三");
System.out.println(array2.getName());
}

运行结果:

原文地址:http://www.cnblogs.com/shenziyi/p/16798031.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性