泛型
参数化类型—jdk1.5出现的
版本更迭产生的畸形的创建方式
List list=new ArrayList();
List list=new ArrayList();
泛型类型由可以支持任意数据类型到具体的类型—泛型的擦除,发生在编译时期。
public class TypeDemo1 {
public static void main(String[] args) {
//jdk1.5以前创建集合对象
//从jdk1.7开始支持List<String> list=new ArrayList<>();
//可以从前往后推导出后面具体的类型
List list=new ArrayList();
//添加任意类型元素
list.add("abc");
list.add(123);
list.add(true);
//取出集合元素进行操作
for (Object object : list) {
//判断元素的具体类型
if(object instanceof String){
String str=(String)object;
}else if(object instanceof Integer){
int a=(int)object;
}
}
}
}
public class TypeDemo2 {
public static void main(String[] args) {
TDemo<String> td=new TDemo();
//属性类型确定了
td.t="abc";
//调用方法
td.m(new Integer(0));
td.m(2.3);
td.m("abc");
td.m(true);
}
}
自定义泛型类
//类名<标识符>
//大写字母
/* E ---elemnts元素
* T ---Type类型
* R ---Result结果
* K ---键
* V ---值
* */
class TDemo<E>{
String str=new String("abc");
//属性
//
E t;//属性类型可以是任意的引用类型
//给定的引用类型可能不能创建对象
//E t=new E()
//允许传入不同类型的参数
public <K> void m(K i){//泛型K当做参数的类型
System.out.println(i.getClass());
}
}