A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宇轩H 中级黑马   /  2017-1-31 20:52  /  618 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

/**  反射
         * 三种方式
                * a:Object类的getClass()方法   用途:判断两个对象是否是同一个字节码文件
                * 使用方式:类名.getClass();
                * b:静态属性class 用途:锁对象
                * 使用方式:类名.class;
                * c:Class类中静态方法forName() 用途:读取配置文件
                * 使用方式:Class.forName("包名+类名");
        * Class.forName()
                * Class clazz = Class.forName("com.eshel.bean.Person");
                * clazz.newInstance();  
                * 使用Class.newInstance()方法获取该对象实例
                * Class类的newInstance()方法是使用该类无参的构造函数创建对象, 如果一个类没有无参的构造函数, 就不能这样创建
        * Constructor类
                * 通过反射获取带参构造方法并使用
                * 提供关于类的单个构造方法的信息以及对它的访问权限。
                * 调用Class类的getConstructor(String.class,int.class)方法获取一个指定的构造函数,
                * 然后再调用Constructor类的newInstance("张三",20)方法创建对象
        * Field 类
                * 通过反射获取成员变量并使用
                * Class.getField(String)方法可以获取类中的指定字段(可见的),
                * 如果是私有的可以用getDeclaedField("name")方法获取,
                * 通过set(obj, "李四")方法可以设置指定对象上该字段的值,
                * 如果是私有的需要先调用setAccessible(true)设置访问权限,
                * 用获取的指定的字段调用get(obj)可以获取指定对象中该字段的值
        * Method 类
                *通过反射获取方法并使用
                * Class.getMethod(String, Class...)(public)
                * 和 Class.getDeclaredMethod(String, Class...)方法可以获取类中的指定方法(private)
                * 调用invoke(Object, Object...)可以调用该方法,
                * Class.getMethod("eat") invoke(obj) Class.getMethod("eat",int.class) invoke(obj,10)
        *
                *通过反射越过泛型检查
                *ArrayList<Integer>的一个对象,在这个集合中添加一个字符串数据,如何实现呢?
                *Class<?> clazzL = Class.forName("java.util.ArrayList");
                *clazzL.getMethod("add", Object.class).invoke(list, "aaa");

2 个回复

倒序浏览
哥们不错啊.
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马