-
泛型集合【重点-解决应用问题】:
I. 概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致。
II. 特点:
1). 编译时即可检查,而非运行时抛出异常。
2). 访问时,不必类型转换(拆箱)。
3). 不同泛型之间引用不能相互赋值,泛型不存在多态。
ArrayList list = new ArrayList();
list.add(10.0);
List myList = new ArrayList();
Vector vector = new Vector();
vector.add(“ads”);
LinkedList bools =new LinkedList();
bools.add(true);
bools.add(false);
//引用约束 空间约束
//参数化类型 。创建集合的时候规范当中能存储的数据类型 -
泛型:高级类别的知识,熟练应用,需要时间、经验的积累(常用名称:E = Element / E = Exception/T = Type / K = Key / V = Value 占位符)
I. 概念:约束-规范类型
II. 泛型的场景:
1). 定义泛型:
A). 实例泛型:
a). 类:创建对象时,为类所定义的泛型,进行参数化赋值
main(){ MyClass mc = new MyClass();
mc.m1(111);}
class MyClass{
public void m1(E e){ } }
b). 接口:实现接口时,为接口所定义的泛型,进行参数化赋值
main(){ MyInterface mi = new MyImplClass ();
mi.m2((byte)11);}
interface MyInterface{
public void m2(T t); }
class MyImplClass implements MyInterface{
@Override
public void m2(Byte t){ } }
B). 静态泛型:
a). 定义在方法的返回值类型前面:、、<T extends Comparable>、<T extends Comparable<? super T>> 可应用在形参列表、返回值两种场景上,不单单可以规范泛型,还可以语义化返回值。
b). 定义在方法的形参列表当中:<?>、<? extends Object>、<? super Integer>,不支持使用& 只能应用在形参列表上,规范泛型。
main(){
MyStaticClass.method(123); //Integer
MyStaticClass.method(1.3); //Double }
class MyStaticClass{
public static void method(T t){ }
public static void method(T t) }
//
main(){
MyStaticClass.method(new Dog());
MyStaticClass.method(new Cat()); //没有继承接口Comparable}
class MyStaticClass{
public static <T extends Animal & Comparable> void method(T[] t){//用作排序// 加上要求作比较} }
abstract class Animal()
class Dog extends Animal implements Comparable{
//实现Comparable接口 泛型
public int compareTo(Dog o){ return 0;}}
class Cat extends Animal{}
/