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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wingtheu 中级黑马   /  2014-11-6 09:21  /  1261 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射

1.Class
.class文件加载到内存中就是一个Class对象
获取Class对象的方式有3种:
Class.forName(类名);
类名.class
对象.getClass()
2.Constructor
Class类的newInstance()方法是使用该类无参的构造函数创建对象, 如果一个类没有无参的构造函数, 就不能这样创建了,可以调用Class类的getConstructor(String.class,int.class)方法获取一个指定的构造函数然后再调用Constructor类的newInstance("张三",20)方法创建对象
3.Field
Class.getField(String)方法可以获取类中的指定字段(可见的), 如果是私有的可以用getDeclaedField("name")方法获取,通过set(obj, "李四")方法可以设置指定对象上该字段的值, 如果是私有的需要先调用setAccessible(true)设置访问权限,用获取的指定的字段调用get(obj)可以获取指定对象中该字段的值
4.Method
Class.getMethod(String, Class...) 和 Class.getDeclaredMethod(String, Class...)方法可以获取类中的指定方法,调用invoke(Object, Object...)可以调用该方法,Class.getMethod("eat") invoke(obj) Class.getMethod("eat",int.class) invoke(obj,10)

3 个回复

倒序浏览
渣渣东西,哈哈哈哈。不过还好啦
回复 使用道具 举报
路过                 
回复 使用道具 举报
好东西!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马