欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

泛型的简单理解 博客分类: JAVA基础 JAVA基础泛型理解编译器 

程序员文章站 2024-03-06 18:49:32
...

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();
 }
 
}