Java中反射机制
来源:互联网 发布:淘宝代购怎么设置 编辑:程序博客网 时间:2024/05/17 23:43
1.反射:用来获得正在运行的java对象
2.反射的功能
1)可以判断运行的对象所属的类
2)可以使用运行时对象具有的所有的成员方法和变量
3)可以通过反射调用到被private修饰的方法
4)生成动态代理
3.实现 反射的类
1)Class:表示正在 运行的java程序的类和接口
2)Field:提供有关类或接口的属性信息
3)Constructor:提供类有点 的单个 构造 方法的信息 以及对他的权限
4)Method:提供有关类或者接口中的某个方法的信息
4.使用反射步骤
1)必须获得一个类的Class对象
Class c1 = Test.class;
Class c2 = Class.forName("类 的完整路径必须如:com.chinasofti.javacore.demo18.Person")
Class c3 = new Test().getClass();
User类:
注意:通过反射创建对象的时候默认调用的是无参的构造方法。
2.反射的功能
1)可以判断运行的对象所属的类
2)可以使用运行时对象具有的所有的成员方法和变量
3)可以通过反射调用到被private修饰的方法
4)生成动态代理
3.实现 反射的类
1)Class:表示正在 运行的java程序的类和接口
2)Field:提供有关类或接口的属性信息
3)Constructor:提供类有点 的单个 构造 方法的信息 以及对他的权限
4)Method:提供有关类或者接口中的某个方法的信息
4.使用反射步骤
1)必须获得一个类的Class对象
Class c1 = Test.class;
Class c2 = Class.forName("类 的完整路径必须如:com.chinasofti.javacore.demo18.Person")
Class c3 = new Test().getClass();
2)可以调用Class对象中的方法获得类的属性 方法 构造方法等信息....
示例代码一:
import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;/** * java中反射中各种类的使用 * @author 周孟军时间:2016年7月27日 下午4:44:06 * */public class MainDemo {public static void main(String[] args) throws ClassNotFoundException {Class c1 = User.class;System.out.println("获得User类的完整包路径:" + c1.getPackage());// 常用的Class c2 = Class.forName("com.zmj.javase.reflect.User");System.out.println("获得User类的完整包路径:" + c2.getPackage());// 获得类的修饰符int i = c1.getModifiers();System.out.println(Modifier.toString(i));System.out.println("获得类的父类:" + c1.getSuperclass());// 获得类的成员变量Field[] fields = c1.getDeclaredFields();for (Field field : fields) {System.out.println(field.getName());}// 获得类的构造方法Constructor[] constructors = c1.getDeclaredConstructors();for (Constructor constructor : constructors) {System.out.println(constructor);}// 获得类的成员方法Method[] m = c1.getDeclaredMethods();for (Method method : m) {System.out.println("普通方法:" + method);}}}
示例二:
import java.lang.reflect.Method;/** * 反射的练习 * @author 周孟军时间:2016年7月27日 下午4:43:18 * */public class MainDemo2 {public static void main(String[] args) {// 通过反射创建对象try {Class cc = User.class;//创建对象User u = (User) cc.newInstance();Method method1 = cc.getDeclaredMethod("setName", String.class);method1.invoke(u, "zhou"); // 运行方法Method method2 = cc.getDeclaredMethod("getName");System.out.println(method2.invoke(u, null));//调用私有方法Method method3 = cc.getDeclaredMethod("show");//在调用私有方法钱需要加上method3.setAccessible(true);method3.invoke(u, null);} catch (Exception e) {e.printStackTrace();}}}
User类:
/** * User实体类 * @author 周孟军时间:2016年7月27日 下午4:43:47 * */public class User {private String name;private String gender;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public User(String name, String gender) {super();this.name = name;this.gender = gender;}public User() {super();}public void show() {System.out.println("我是私有方法。。。");}}
注意:通过反射创建对象的时候默认调用的是无参的构造方法。
1 0
- Java 反射机制(中)
- Java中反射机制
- java中反射机制
- Java中反射机制
- Java中反射机制
- java中反射机制
- Java中反射机制详解
- java中反射机制详解
- Java中反射机制详解
- 浅谈JAVA中反射机制
- Java中反射机制详解
- Java中反射机制原理
- java中 反射机制详解
- Java中反射机制简介
- Java中反射机制详解
- Java中反射机制详解
- Java中反射机制详解
- Java中反射机制详解
- 架构设计经验
- jsp显示本地图片---用户上传显示预览
- Wireless工具移植之openssl版本导致wifi连接失败的问题
- 从苏宁电器到卡巴斯基第20篇:曲折考研路(补)
- 基于CTP的程序化交易系统开发(二)
- Java中反射机制
- HDU 1540<线段树,区间并>
- c++ const
- MatLab2012b/MatLab2013b分类器大全(svm,knn,随机森林等)
- Tomcat只能用localhost访问工程,无法用ip地址访问
- android 外接usb设备之麦克风
- 屏幕上1像素代表的实际距离是多少?
- 操作Excel表格的功能类 ExcelReader
- POJ-2689 Prime Distance(两次素数筛+偏移处理)