Java 中的反射

来源:互联网 发布:万网域名后台登陆 编辑:程序博客网 时间:2024/06/08 09:33

一、反射:应用在程序运行时动态的发现类中的属性、方法动态的执行相关的方法。

二、在Java中反射的起点是类对象(class类型)

所有类的类对象只有一份,其获取方式有三种:

1)类名.class

2)类的对象.getClass();

3)Class.forName(“包名.类名”);

三、类对象的应用

1)通过类对象构建类的对象

Class<?> c = Class.forName(“包名.类名”) ;

Activity a = (Activity) c.newInstance();

注:采用此方式构建类的对象时有个前提:此类的中必须包含一个可访问的无参的构造方法;

2)通过类对象获得类中的构造方法对象

通过构造方法对象创建类的对象,通过getDeclaredConstructor(Class<?>...paramTypes),getDeclaredConstructor(),getConstructor()获得构造方法对象以后调用Constructor的newInstance(object...data)方法构建类的对象。

3)通过类对象获得类中的方法对象,然后动态调用方法  

⑴获得Printer类对象

Class<?> c = Class.forName("类名.Printer");

⑵获得Printer类的额print方法对象

Method m = c.getDeclaredMethod("print",String.Class);

⑶通过反射调用方法

Object obj = m.invoke(c.newInstance(),"*****");

4)通过类对象获得属性对象,然后可给属性赋值或者获得属性的值

Class.forName("包名.类名");

Field f = c.getDeclaredField("flag");

f.setAccessible(true);

MySearchView sv = (MySearchView) c.newInstance();

f.set(sv.false);//赋值

Object obj = f.get(sv);//取值

System.out.println(obj);

0 0
原创粉丝点击