泛型简介
个人理解泛型就是在 定义类,接口,方法的时候带入使用类型的形参, 类似于给这个对象提前打上一个标签一样.强制在需要使用的类,接口,方法的地方将其转换成实际类型,进行动态的传递.
JAVA泛型 是自 JDK 1.5增加的新功能, 为的是往JAVA集合中插入对象的时候,能够记住集合中对象的类型,并且在编译时能够检测出非集合中定义的类型,提前提示我们; 而在1.5版本之前是没有此项功能,丢进集合对象中之后,集合对象不会记住丢进来的是什么类型,默认成‘Object’ 对象,在编译时不检查类型这会导致从集合中取出对象进行相关操作的时候产生ClassCastException错误.
如图:
改成如下这样:
List<String> ls = new ArrayList<String>();
可以在编译时就弹出提示,防止预见性的错误发生. 另外在jdk 1.7之后 可以对象构造器可以改写成
List<String> ls = new ArrayList<>();
Map<String, Integer> map = new HashMap<>();
省略都后面尖括号里的内容,更加简洁。java会自行推断出是什么类型.
图为接口中定义泛型
图为方法中定义泛型(方法中的泛型是根据构造器传入的泛型进行匹配, 字母E会动态的指定实际参数类型)
如文章第一幅图中main方法中List的add方法,如果List定义尖括号'<String>'中为字符串类型,那么当前字母E中则会动态的指定成为字符串类型.
** 图为类中定义泛型**