多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## Java专题八:泛型 [TOC] ### 8.1.泛型的作用 - 进行编译时类型检查,可以发现部分类型错误语句 - 避免了运行时才抛出java.lang.ClassCastException异常的情况 - 使用时避免了进行类型转换(类似`(String)object`)的问题 **例1:** 在Java5以前集合中的元素类型都是Object类型的 ``` List list = new ArrayList(); list.add(new Integer(0)); list.add("hello"); for(Object obj : list){ String str = (String) obj; } ``` 输出: ``` Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String ``` **例2:** Java5以后集合框架中的Object类型都换成了泛型 ``` List<String> list = new ArrayList<>(); list.add("hello"); // list.add(new Integer(1)); // 报语法错误 for(String st : list){ System.out.println(st); } ``` 输出: ``` hello ``` ### 8.2.泛型的约定 | 类型| 说明| | ------------ | ------------ | | E |Element| | K | Key | | N | Number | | T | Type | | V | Value | | S,U,V etc. | 2nd, 3rd, 4th types | ### 8.3.泛型的使用 - 自定义泛型方法: ``` <T>int getData(T t){ return 0; } ``` <自定义泛型声明>返回值类型 方法名(自定义泛型…变量名) - 自定义泛型类:class 类名<自定义泛型声明>{} ``` class Person<T>{ int getData(T t){ return 0; } } ``` - 泛型上下限:<? super T><? Extends T>