zoukankan      html  css  js  c++  java
  • Java基础之反射

    反射是java提供的一个重要功能,可以在运行时检查类、接口、方法和变量等信息,无需知道类的名字,方法名等。还可以在运行时实例化新对象,调用方法以及设置和获取变量值。

    反射非常强大和有用,很多java框架中都有反射的影子,例如spring、mybatis等等,

    JDBC利用反射将数据库的表字段映射到java对象的getter/setter方法。

    Jackson, GSON, Boon等类库也是利用反射将JSON文件的属性映射到java对的象getter/setter方法。

    可见,只要使用java,反射就无处不在。

    未完成 。。。

     程序执行时,利用反射在List集合动态插入其他类型数据:

    import java.lang.reflect.Method;
    import java.util.ArrayList;
    import java.util.List;
    
    public class ReflectList {
    	
    	public static void main(String[] args) {
    		
    		List<String> array = new ArrayList<>();
    		array.add("张三丰");
    		array.add("张无忌");
    		
    		//获取class类对象
    		Class list = array.getClass();
    		
    		try {
    			//获取ArrayList集合的add方法
    			Method add = list.getDeclaredMethod("add", Object.class);
    			//执行add方法
    			add.invoke(array, 100);
    			System.out.println(array);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		
    		/**
    		 * 反射添加100后不可遍历list集合,会报错:
    		 * Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
    		 * at www.mxh.com.ReflectList.main(ReflectList.java:28)
    		 * 
    		 * 100类型不符合String
    		 */
    		for(int i=0; i<array.size(); i++) {
    			System.out.println(array.get(i));
    		}
    		
    	}
    
    }
    

      

     推荐阅读:Java反射使用总结 - alunbar的文章 - 知乎 https://zhuanlan.zhihu.com/p/80519709

  • 相关阅读:
    [CSS揭秘]不规则投影
    [CSS揭秘]规则投影
    [CSS揭秘]伪随机背景
    [CSS揭秘]复杂的背景图案
    [CSS揭秘]条纹背景
    [CSS揭秘]连续的图像边框
    Git_Eclipse:[1]Git安装插件
    Git_常用命令
    上海 day38--多表查询、python操作MySQL
    上海 day37-- MySQL 单表查询,连表操作和子查询
  • 原文地址:https://www.cnblogs.com/mxh-java/p/11457079.html
Copyright © 2011-2022 走看看