泛型是代码可以应用于多种不同的数据类型,同时保持类型安全。泛型的核心概念是参数化类型,即将所操作的数据类型指定为一个参数。
下面是一个泛型的例子
package FanXin;//泛型
import java.util.Arrays;
/**
*
* @param <E>
* 类型参数化
*/
public class MyArrayList<E>{ //E 所传的数据类型(可以是 int double float...)
Object [] obj=new Object[10];//object兼容所有类型。new了一个可装10个元素的任意类型数组
int size;
public boolean add(E a)
{
obj[size++]=a;
return true;
}
public E get(int index){ //E是一个变量
return (E)obj[index]; //index被强转成E类型
}
@Override
public String toString() {
return "MyArrayList{" +
"obj=" + Arrays.toString(obj) +
", size=" + size +
'}';
}
}
package FanXin;
public class MyArrayListTest {
public static void main(String[] args) {
MyArrayList<String> stringMyArrayList = new MyArrayList<>(); //传的String类型
//则只能为String类型
stringMyArrayList.add("123");
stringMyArrayList.add("xyz");
stringMyArrayList.add("mon");
System.out.println("stringMyArrayList = " + stringMyArrayList);
//数组10个元素,有效值三个
System.out.println("stringMyArrayList.get(1) = " + stringMyArrayList.get(1));
//输出xyz
System.out.println("stringMyArrayList.get(2) = " + stringMyArrayList.get(2));
//输出mon
//Integer类型
MyArrayList<Integer> integerMyArrayList = new MyArrayList<>();
integerMyArrayList.add(11);
integerMyArrayList.add(12);
integerMyArrayList.add(13);
System.out.println("integerMyArrayList = " + integerMyArrayList);
System.out.println("integerMyArrayList.get(2) = " + integerMyArrayList.get(2));
//13
System.out.println("integerMyArrayList.get(3) = " + integerMyArrayList.get(3));
//空
}
}