java反射应用--调用方法与访问属性

来源:互联网 发布:premiere cs6 mac下载 编辑:程序博客网 时间:2024/05/21 09:52

一、调用方法

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。

 

应用:在程序需要动态创建摸个类的对象时,才会考虑使用反射,并通过反射来改变类中私有属性的值

原创粉丝点击