黑马程序员之反射
2015-09-06 20:47
477 查看
——- android培训、java培训、期待与您交流! ———-
2,在运行时构造任意一个类的对象;
3,在运行时判断任意一个类所具有的成员变量和方法;
4,在运行时调用任意一个对象的方法;生成动态代理。
Java反射机制主要提供了以下功能:
1,在运行时判断任意一个对象所属的类;2,在运行时构造任意一个类的对象;
3,在运行时判断任意一个类所具有的成员变量和方法;
4,在运行时调用任意一个对象的方法;生成动态代理。
1、 得到对象的属性
public Object getProperty(Object owner, String fieldName) throws Exception { Class ownerClass = owner.getClass(); //获取字节码对象 Field field = ownerClass.getField(fieldName); //获取类声明的属性 Object property = field.get(owner); //得到该属性的实例 return property; }
2. 得到类的静态属性
public Object getStaticProperty(String className, String fieldName) throws Exception { Class ownerClass = Class.forName(className); //获取字节码对象 Field field = ownerClass.getField(fieldName); //获取类声明的属性 Object property = field.get(ownerClass); //得到该属性的实例 return property; }
3. 执行对象的方法
public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception { Class ownerClass = owner.getClass(); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { //配置参数的Class数组,作为寻找Method的条件 argsClass = args.getClass(); } Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(owner, args); }
4. 新建实例
public Object newInstance(String className, Object[] args) throws Exception { Class newoneClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass = args.getClass(); Constructor cons = newoneClass.getConstructor(argsClass); return cons.newInstance(args); } public Object newInstance(String className, Object[] args) throws Exception { Class newoneClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass = args.getClass(); } Constructor cons = newoneClass.getConstructor(argsClass); return cons.newInstance(args); }
相关文章推荐
- leetcode 之 H-index
- 黑马程序员之IO字节流及缓冲技术
- 优化Android Studio/Gradle构建(转自黑马程序员)
- iOS面试题02-数据存储
- 请问面试官?一次很有意思的调查活动
- fir.im Weekly - 每个程序员都应当拥有的技能树
- Android必看面试题
- 怎样才是理想的程序员
- java面试题
- iOS面试常见的问题
- 面试题
- iOS面试题
- 一个fork的面试题
- PHP面试中常见的面试试题与算法例子
- 程序员如何保持优秀
- 数据库常见面试题
- 治愈IT职业生涯的消化系统
- 一个程序员的随感-第一次离职
- fir.im Weekly - 每个程序员都应当拥有的技能树
- JAVA程序员成长之路的总结