版权声明:酷酷的锐 https://blog.csdn.net/weixin_42057767/article/details/82229172
在JDK1.5以前,容器可以储存Object的任意子类型,
但是在对元素进行操作时比如调用元素的方法等,
我们必须知道元素的类型,
因此在编程中增加了大量代码,来强制转换,增加了开发难度
所以JDK1.5开始支持了一个新特性,叫泛型机制。
用来规定容器中存储的元素类型。
此机制可以在编译期间就可以判断元素类型。
集合在定义时,可以用泛型机制来指定元素的类型,
这样编译器在编译期间就可以进行检查元素类型是否匹配,避免了程序在运行时出现过多的错误
集合框架中的所有类型(接口,抽象类,实现类)都是用了泛型机制
泛型机制的参数只能传引用类型。
/**
* 定义类型时,使用泛型机制,
* 泛型机制的本质是参数化类型
* (PS:与参数化对象/数据进行对比,与方法的形参比较)
*/
public class MyContainer<M> {
Object[] values;
public MyContainer() {
values = new Object[16];
}
/**定义方法时,使用泛型机制*/
public void add(M m) {
if((size()+1)>values.length) {
values = Arrays.copyOf(values, values.length+16);
}
for(int i=0;i<values.length;i++) {
if(values[i]==null) {
values[i] = m;
break;
}
}
}
public M remove(Object obj) {
M m = null;
for(int i=0;i<size();i++) {
if(values[i].equals(obj)) {
//存储要被移除的对象
m = (M)values[i];
System.arraycopy(values, i+1, values, i, size()-i-1);
values[size()-1]=null;
break;
}
}
return m;
}
}