zoukankan      html  css  js  c++  java
  • 通过反射了解集合泛型的本质

    通过反射了解集合泛型的本质
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    /**
     * 通过反射了解集合泛型的本质
     * @author shm
     *
     */
    public class MethodDemo02 {
    	public static void main(String[] args) {
    		ArrayList list = new ArrayList();
    		list.add("hello");
    		list.add(20);
    		
    		ArrayList<String> list1 = new ArrayList<String>();
    		list1.add("hello");
    		//list1.add(20);//这个加入是错误的:The method add(int, String) in the type ArrayList<String> is not applicable for the arguments (int)
    	
    		Class c1 = list.getClass();
    		Class c2 = list1.getClass();
    		System.out.println(c1==c2);
    		//反射的操作都是编译后的操作
    		
    		/**
    		 * c1=c2结果返回TRUE说明编译后集合的泛型是去泛型化的
    		 * java中集合的泛型,是防止错误输入的,只在编译阶段有效,绕过编译后就无效了
    		 * 验证:我们可以通过反射操作来绕过编译
    		 */
    		try {
    			Method method = c2.getMethod("add", Object.class);
    			method.invoke(list1, 20);
    			System.out.println(list1);
    			
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		
    		
    	}
    }
  • 相关阅读:
    oracle-PL/SQL1
    ROS之Gazebo
    ROS之urdf 2
    ROS之urdf 1
    ROS 面部识别
    ROS x Arduino
    STM32F0的低功耗模式
    项目进度
    C++函数返回为引用
    STM32F0的多路ADC 无DMA
  • 原文地址:https://www.cnblogs.com/bsyx/p/7107459.html
Copyright © 2011-2022 走看看