JAVA反射机制
2016-03-29 17:54
597 查看
什么是JAVA反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。JAVA反射常用类
Class类:类的Class实例,表示正在运行的 Java 应用程序中的类和接口。每个类都有与其对应的Class实例Constructor类:提供关于类的单个构造方法的信息以及对它的访问权限。
Field类:提供有关类或接口的属性的信息,以及对它的动态访问权限。
Method类:提供关于类或接口上单独某个方法的信息。
Class
/** * 获取类的Class实例三种方法,com.maiya.Person是类的全名 */ Class clazz1=Class.forName("com.maiya.Person"); Class clazz2=Person.class; Class clazz3=new Person().getClass();
String className=clazz1.getName();//获取包全名
Constructor
/** * 获取类的构造函数 */ //获取类所有Public的构造函数 Constructor[] cons1=clazz1.getConstructors(); //获取类所有Public和非Public的构造函数 Constructor[] cons2=clazz1.getDeclaredConstructors(); //根据传入的参数(参数类型为Class[]) ,获取含有指定参数类型的Public的构造器 Constructor cons3=clazz1.getConstructor(new Class[]{String.class}); //根据传入的参数(参数类型为Class[]) ,获取含有指定参数类型的Public和非Public的构造器 Constructor cons4=clazz1.getDeclaredConstructor(new Class[]{String.class}); //获取构造函数的参数类型 Class[] parames=cons3.getParameterTypes(); //获取构造函数的修饰符 int mod=cons3.getModifiers(); String modifier=Modifier.toString(mod);
Field
/** * 获取类的属性(其中获取修饰符的方法与上面相同) */ //获取类所有Public的属性 Field[] field1=clazz1.getFields(); //获取类所有Public和非Public的属性 Field[] field2=clazz1.getDeclaredFields(); //根据传入的参数(参数类型为String) ,获取指定属性名的Public的属性 Field field3=clazz1.getField("name"); //根据传入的参数(参数类型为String) ,获取指定属性名的Public和非Public的属性 Field field4=clazz1.getDeclaredField("name"); //设置指定对象的属性值(传入一个与其Class实例相对应的对象) field3.setAccessible(true); field3.set(new Person(), "李明"); //获取指定对象的属性值 Object obj=field3.get(new Person());
Method
/** * 获取类的方法 */ //获取类所有Public的属性 Method[] method1=clazz1.getMethods(); //获取类所有Public和非Public的属性 Method[] method2=clazz1.getDeclaredMethods(); //根据方法名和方法参数类型 ,获取指定的Public的方法 Method method3=clazz1.getMethod("setName",new Class[]{String.class}); //根据方法名和方法参数类型 ,获取指定的Public和非Public的方法 Method method4=clazz1.getDeclaredMethod("setName",new Class[]{String.class}); //获取方法异常类型 Class[] exceptions=method3.getExceptionTypes(); //获取方法返回值类 Class type=method3.getReturnType(); //根据指定对象以及传入的方法参数执行方法 method3.invoke(new Person(), new String[]{"李明"});
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树