泛型的简单理解 博客分类: JAVA基础 JAVA基础泛型理解编译器
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Vector;
public class GenericTest {
/*在JAVA1.4中的集合应用是无泛型的,我们可以向内部传入各种种类的值*/
public void Generic14(){
ArrayList co = new ArrayList();
co.add(1);
co.add(1L);
co.add("aaa");
/*但是我们需要在获取的时候对其进行强制类型转换*/
int i = (Integer)co.get(0);
System.out.println(i);
}
/*JDK1.5中添加了泛型关键字为<>(如<String>,其中放置的基本数据类型)这样有效的减少强制转换*/
public void Generic15() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{
ArrayList<Integer> cos = new ArrayList<Integer>();
cos.add(1);
cos.add(2);
/*因为经过泛型所以cos.add("abc");不能被编译器所通过,但是泛型的样式在编译过后将被剔除仍为ArrayList形式*/
/*以下为反射的例子,去做验证,利用反射的方法调用ArrayList的add方法向cos对象中插入字符串abc*/
Method method = ArrayList.class.getMethod("add", Object.class);
// 对象 参数值
method.invoke(cos, "abc");
//遍历cos对象
for(Object c : cos){
System.out.println(c);
}
}
public void Connection(){
//Collection父类
Collection c = new ArrayList();
//Vector类型用于做什么?
Vector<String> d = new Vector();
}
public static void main(String[] args) throws SecurityException, IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
GenericTest genericTest = new GenericTest();
genericTest.Generic14();
genericTest.Generic15();
}
}