java反射应用--调用方法与访问属性
2013-05-16 21:48
501 查看
一、调用方法
1、利用反射可以获取类的信息、创建相关对象(如Coustrutcor类、Field类、Method类),在Method里面有一个invoke方法,通过invoke()方法来调用Method对象对应的方法;
Object invoke(Object obj ,Object...args):obj是执行该方法的对象,args是执行该方法时传入该方法的参数。
2、利用反射调用Class对应类中的私有方法时,应该利用setAccessible(Boolean flag)方法,如果flag=true,表示该Method在使用时应该取消Java语言访问权限检查;如果flag=flase,表示该Method在使用时应该实施Java语言访问权限检查。
二、访问属性
通过Class对象的getFields()或getField()方法来获取该类包含的全部公共属性或指定的公共属性,getDeclaredFields()或getDeclaredField()则不受访问权限的限制。于是,利用Field类提供的方法来访问属性:
getX**(Object obj):obj是Class对象对应类的实例对象,通过该方法可以获取obj对象中该属性的属性值。
示例:
Person p=new Person();
nameField.get(p);//表示返回的是引用类型的属性,如String类型的属性。
nameField.getInt(p);
setX**(Object obj,X** val):将obj对象的该属性的值设为参数val
Field.setAccessible(true);访问private访问控制属性。
说明:此处的X**对应的是java的8个基本数据类型,如字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。
应用:在程序需要动态创建摸个类的对象时,才会考虑使用反射,并通过反射来改变类中私有属性的值
1、利用反射可以获取类的信息、创建相关对象(如Coustrutcor类、Field类、Method类),在Method里面有一个invoke方法,通过invoke()方法来调用Method对象对应的方法;
Object invoke(Object obj ,Object...args):obj是执行该方法的对象,args是执行该方法时传入该方法的参数。
2、利用反射调用Class对应类中的私有方法时,应该利用setAccessible(Boolean flag)方法,如果flag=true,表示该Method在使用时应该取消Java语言访问权限检查;如果flag=flase,表示该Method在使用时应该实施Java语言访问权限检查。
二、访问属性
通过Class对象的getFields()或getField()方法来获取该类包含的全部公共属性或指定的公共属性,getDeclaredFields()或getDeclaredField()则不受访问权限的限制。于是,利用Field类提供的方法来访问属性:
getX**(Object obj):obj是Class对象对应类的实例对象,通过该方法可以获取obj对象中该属性的属性值。
示例:
Person p=new Person();
nameField.get(p);//表示返回的是引用类型的属性,如String类型的属性。
nameField.getInt(p);
setX**(Object obj,X** val):将obj对象的该属性的值设为参数val
Field.setAccessible(true);访问private访问控制属性。
说明:此处的X**对应的是java的8个基本数据类型,如字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。
应用:在程序需要动态创建摸个类的对象时,才会考虑使用反射,并通过反射来改变类中私有属性的值
相关文章推荐
- java利用反射访问类的私有(private)属性及方法
- java 反射入门-属性方法调用实例
- JNI学习之---用jni API 访问java对象的属性,方法,调用构造器。
- java反射调用私有方法和修改私有属性
- Java反射的三种实现方式,访问私有方法和私有属性
- 关于java的反射,调用私有方法(有参数私有方法),私有属性
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳
- Java内存理解 && 反射访问私有属性或方法
- Java中利用反射对类的hidden成员方法和属性的访问
- java 反射入门-属性方法调用实例
- java利用反射访问类的私有(private)属性及方法
- java反射访问私有属性和方法
- Java反射之访问私有属性或方法
- 2018/01/08JAVA 基础 / 接口与继承:调用父类/子类的类方法、对象方法,访问父类的类属性、对象属性的方式汇总
- Java通过反射调用其他类的私有属性和私有方法
- java 通过反射获得类的属性和调用方法
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- java基础之反射-通过反射调用某个属性的setter和getter方法
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- Java反射之访问私有属性或方法