Java中泛型(1)——泛型介绍(传智播客毕老师视频讲解)
来源:互联网 发布:雄3导弹知乎 编辑:程序博客网 时间:2024/05/17 23:53
泛型:JDK1.5版本以后出现新特性。用于解决安全问题,是一个类型安全机制
1、泛型概述
好处
1.将运行时期出现问题ClassCastException,转移到了编译时期。方便于程序员解决问题。让运行时问题减少,安全。
2,避免了强制转换麻烦。
泛型格式:通过<>来定义要操作的引用数据类型。
在使用java提供的对象时,什么时候写泛型呢?
通常在集合框架中很常见,只要见到<>就要定义泛型。其实<> 就是用来接收类型的。
1、泛型概述
好处
1.将运行时期出现问题ClassCastException,转移到了编译时期。方便于程序员解决问题。让运行时问题减少,安全。
2,避免了强制转换麻烦。
泛型格式:通过<>来定义要操作的引用数据类型。
在使用java提供的对象时,什么时候写泛型呢?
通常在集合框架中很常见,只要见到<>就要定义泛型。其实<> 就是用来接收类型的。
使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
比如代码;
import java.util.*;public class GenericDemo {public static void main(String[] args) {ArrayList L=new ArrayList();L.add("001");L.add("002");L.add("003");L.add("004");L.add(005);ListIterator it=L.listIterator();while(it.hasNext()){String s=(String)it.next();System.out.println(s+"...."+s.length());}}}结果如下:
发现报错了,因为集合可以存储各种类型的对象,因此在使用时,可以存入005,并由于自动装箱,将其作为new Integer(005)存入L集合中,但是在迭代取的过程中,Integer类型的对象不能够自动转换至String类型的对象,所以在编译时通过,但是发生运行时异常报错。
为了能够使这种错误在编译时就明朗,解决这种安全问题,应用泛型!
代码如下:
可见此程序在规定泛型后,写入L.add(005)时在编译过程中就提示有错误了!而在ListIterator后定义迭代器接收类型后,在Sting s=it.next();都不用进行强制类型转换了!
2、泛型应用
在比较器中应用泛型,
可以看出,在创建比较器时,可以定义泛型,即指定类型进行比较:
代码如下
import java.util.Comparator;import java.util.Iterator;import java.util.TreeSet;public class LenComparator implements Comparator<String>{//按照字符串长度比较,若字符串长度相同,再按照字符串的自然顺序比较public int compare(String obj1,String obj2){String s1=obj1;String s2=obj2;int i=new Integer(s1.length()).compareTo(new Integer(s2.length()));if(i>0)return 1;else if(i==0)return s1.compareTo(s2);elsereturn -1;}}public class generic01 {public static void main(String[] args){TreeSet<String> T=new TreeSet<String>(new LenComparator());T.add("001");T.add("0002");T.add("00005");T.add("004");T.add("0003");Iterator<String> it=T.iterator();while(it.hasNext()){System.out.println(".."+it.next());}}}结果如下:
并且由于定义了比较器泛型,在程序编译中不会有警告提示,保证了程序的安全性;同时在比较器中,避免了类型强制转换!
0 0
- Java中泛型(1)——泛型介绍(传智播客毕老师视频讲解)
- Java中泛型(3)——泛型方法(传智播客毕老师视频讲解)
- Java中泛型(4)——泛型接口(传智播客毕老师视频讲解)
- Java中泛型(5)——泛型限定(传智播客毕老师视频讲解)
- Java中泛型(2)——泛型类(传智播客毕老师视频讲解)
- Java多线程(1)——多线程创建(传智播客毕老师视频讲解)
- Java中Collection子接口(1)——List接口(传智播客毕老师视频讲解)
- Java中IO流(1)——IO流概述(传智播客毕老师视频讲解)
- Java多线程(2)——多线程安全(传智播客毕老师视频讲解)
- Java多线程(3)——多线程通信(传智播客毕老师视频讲解)
- Java多线程(4)——多线程JDK5.0升级版(传智播客毕老师视频讲解)
- Java多线程(5)——多线程停止(传智播客毕老师视频讲解)
- Java多线程(6)——Thread类中的一些方法(传智播客毕老师视频讲解)
- Java中Collection子接口(2)——Set接口(传智播客毕老师视频讲解)
- Java中IO流(2)——字符流(传智播客毕老师视频讲解)
- Java中IO流(3)——字符流缓冲区(传智播客毕老师视频讲解)
- Java中IO流(4)——字节流(传智播客毕老师视频讲解)
- Java中IO流(5)——字节流缓冲区(传智播客毕老师视频讲解)
- TriggerManage
- Matlab中plot函数及图形修饰说明
- 11g新特性_索引的可见与不可见
- reviewboard搭建环境安装(1):虚拟机vmwork 下安装ubuntu
- Android软键盘弹出时把布局控件顶上去的解决方法
- Java中泛型(1)——泛型介绍(传智播客毕老师视频讲解)
- 解密腾讯SNG云运维平台“织云”
- 程序员应该常去的一些网站
- 最简单也最难——如何获取到Android控件的高度
- Lucene 4.4 IndexWriter构造函数中不提供是否增量的参数。
- Objective-C基础回顾 1. 复制--NSCopying
- kafka
- iphone-命令行编译之--xcodebuild
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)