集合的泛型

版权声明:酷酷的锐 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;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_42057767/article/details/82229172