learn_java_day02:泛型简介

1.泛型
     1.1泛型的介绍
          简单说:泛型是一种类型参数,专门用来保存类型用的。
          eg:最早接触泛型是在ArrayList,这个E就是所谓的泛型了,使用ArrayList时,只要给E指定某一个类型,里面所有用到泛型的地方都会被指定对应的类型。
     1.2使用泛型的好处
     不用泛型带来的问题:集合若不指定泛型,默认就是Object,存储的元素类型自动提升为Object,获取元素时得到的都是Object,若要调用特有方法需要转型,给我们编程带来麻烦。
     使用泛型带来的好处:可以在编译时就对类型做判断,避免不必要的类型转换操作,可以精简代码,也避免了因为类型转换导致的代码异常
     1.3泛型的注意事项
     泛型在代码运行时,泛型会被擦除,后面学习反射的时候,可以实现在代码运行的,过程中添加其他类型的数据到集合。
注:泛型只在编译时期限定数据的类型,在运行时期会被擦除
     1.4自定义泛型类
     当一个类定义其属性的时候,不确定具体是什么类型时,就可以使用泛型表示该属性的类型
     定义格式:在类型名后面加上一对尖括号,里面定义泛型.一般使用一个英文大写字母表示,如果有多个泛型使用逗号分隔。public class 类名<泛型名>{……}
eg:public class notecode.notecode.Student<X,Y>{
X xObj;
}
     泛型的确定:当创建此泛型类时,确定泛型类中泛型的具体数据类型
     1.5自定义泛型接口
     当定义接口时,内部方法中其参数类型,返回值类型不确定时,就可以使用泛型替代了。
     定义泛型接口语法:在接口后面加上一对尖括号,尖括号中定义泛型,一般使用大写字母表示,多个泛型用逗号分隔。
语法格式:public interface<泛型名>{……}
eg:public interface Collection{
public boolean add(E e);
}
     泛型的确定:实现类去指定泛型接口的泛型,实现类不去指定泛型接口的泛型,则实现类进行延续泛型,回到泛型类的使用。
     1.6自定义泛型方法
     当定义方法时,方法中参数类型,返回值类型不确定时,就可以使用泛型替代了
     泛型方法的定义:可以在方法的返回值类型前定义泛型,语法格式:public <泛型名> 返回值类型 方法名(参数列表){……}
eg:public void show(T t){……}
     泛型的确定:当调用一个泛型方法,传入的参数是什么类型,那么泛型就会被确定
     1.7通配符
     当我们对泛型的类型确定不了,而是表达的可以是任意类型,可以使用泛型通配符给定,符号就是一个问号:?表示任意类型,用来给泛型指定的一种通配值。
eg:public static void shuffle(List<?> list){
//……
}
     1.8受限泛型
     受限泛型是指,在使用通配符的过程中,对泛型做了约束,给泛型指定类型时,只能是某个类型父类型或者子类型
     分类:
     泛型的下限:<?super 类型> //只能是某一类型,及其父类型,其他类型不支持
      泛型的上限:<?extends 类型> //只能是某一个类型,及其子类型,其他类型不支持

posted @ 2022-09-09 19:15  孤独的漫步者  阅读(29)  评论(0)    收藏  举报