java反射机制详解 及 Method.invoke解释 getMethod
来源:互联网 发布:卖家淘宝店铺修改名字 编辑:程序博客网 时间:2024/06/07 05:41
Java反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
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; }
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++) { argsClass[i] = args[i].getClass(); } Method method = ownerClass.getMethod(methodName,argsClass); return method.invoke(owner, args); }
4. 执行某个类的静态方法
public Object invokeStaticMethod(String className, String methodName, Object[] args) throws Exception { Class ownerClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Method method = ownerClass.getMethod(methodName,argsClass); return method.invoke(null, args); }
5. 新建实例
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[i] = args[i].getClass(); } Constructor cons = newoneClass.getConstructor(argsClass); return cons.newInstance(args); }
6. 判断是否为某个类的实例
public boolean isInstance(Object obj, Class cls) { return cls.isInstance(obj); }
阅读全文
0 0
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制详解 及 Method.invoke解释 getMethod
- java反射机制 + Method.invoke解释 getMethod + 反射理解
- java反射机制 及 Method.invoke,Class. getMethod()的使用
- java反射机制 及 Method.invoke,Class. getMethod()的使用
- java反射机制详解 及 Method.invoke解释
- java反射机制详解 及 Method.invoke解释
- MFC的简单使用(加法器的实现)
- 如何用jquery实现点击后跳到页面指定位置
- HDU--dp练习--1008--Super Jumping! Jumping! Jumping!
- 常用adb命令
- 奇数幻方
- java反射机制详解 及 Method.invoke解释 getMethod
- Python学习1
- Floyd,Dijkstra的详解
- get传参 有特殊字符 比如+ 会变为空格
- Linux 3.14的设备树-ARM架构-4412平台,最详细的实战开发代码(二)
- struts2上传实例
- PHP运行机制漫谈
- Mongodb集群搭建的三种方式
- HDU 1532-Drainage Ditches(网络最大流,EK,Ford-Fulkerson,dinic3种算法套模板)