Java反射机制详解
来源:互联网 发布:淘宝给差评还能退货吗 编辑:程序博客网 时间:2024/06/06 14:28
反射机制
反射就是把Java类中的各种成分映射成相应的java类。例如,一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的Java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示Java类的Class类显示要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,它们是Field、Method、Contructor、Package等等。
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
Field:属性域
/*动态方法获取属性域值*/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;}/*静态方法获取属性域值*/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;}
Method:方法域
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);/*执行静态方法调用*/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); } }
Consturctor:构造函数域
Consturctor(构造器)类代表某个类中的一个构造方法
(1) 得到某个类所有的构造方法:例如:Constructor [] constructors = Class.forName("java.lang.String").getConstructors();
(2) 得到某一个构造方法:例如:Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);
(3) 创建实例对象:通常方式:String str=new String(new StringBuffer("abc"));
反射方式:String str=(String) constructor.newInstance(new StringBuffer("abc"));
Instance:判断域
public boolean isInstance(Object obj, Class cls) {
return cls.isInstance(obj);
}
obj instanceof Object
判读当前对象是否是类的一个实例
- java反射机制详解!
- java 反射机制详解
- JAVA反射机制详解
- java反射机制详解
- Java反射机制详解
- Java反射机制详解
- java反射机制详解
- Java反射机制详解
- Java反射机制详解
- JAVA反射机制详解
- java反射机制详解
- Java反射机制详解
- Java反射机制详解
- java反射机制详解
- Java反射机制详解
- java反射机制详解
- Java反射机制详解
- Java反射机制详解
- 实现表格列表显示图片名称,点击可下载
- adb调试配置
- JscrollPane控制滚动条自动滚到底部
- linux中的vim的几个基本操作(二)
- java分页导航生成工具
- Java反射机制详解
- ubuntu navicat110 for mysql 装配与破解
- sql2005无法查看数据库属性:在位置 0 处没有任何行。 (System.Data)
- ssh 登陆主机
- 实现 Lip-sync
- 如何学习Javascript
- 数学专业的数学与计算机专业的数学的比较
- 用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法
- 漂亮的PPT模板:三步搞定年终报告