Java反射
2021-02-09 22:18
标签:tde str 信息 div master 生成 反射机制 reflect ocs 在Java中反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法。这种动态获取信息以及动态调用对象方法的功能成为Java语言的反射机制。 静态编译和动态编译: 静态编译:在编译时确定类型,绑定对象 动态编译:在运行时确定类型,绑定对象 Java反射API 反射API用来生成JVM中的类、接口或者对象的信息 反射的使用步骤(获取class对象,调用对象方法) 获取class对象的三种方法 调用某个对象的getClass()方法 Person p = new Person(); Class clazz = p.getClass(); 调用某个类的class属性来获取该类对应的class对象 Class clazz = Person.class; 使用Class类中的forName()静态方法(最安全/性能最好) Class clazz = Class.forName("类的全路径"); (最常用) 创建对象的两种方法 反射的优缺点 优点:运行期类型的判断,动态加载类,提高代码灵活性 缺点:1,性能瓶颈,反射相当于一些列解释操作,通知JVM要做的事情,性能比直接Java代码要慢的多。2,安全问题,会增加安全隐患 参考文档:https://zhuanlan.zhihu.com/p/80519709 https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/basic/reflection.md Java反射 标签:tde str 信息 div master 生成 反射机制 reflect ocs 原文地址:https://www.cnblogs.com/codingLiu/p/12748803.html
//获取Person类的Class对象
Class clazz = Class.forName("reflection.Person");
//使用.newInstance方法创建对象
Person p = (Person)clazz.newInstance();
//获取构造方法并创建对象
Constructor c = clazz.getDeclaredConstructor(String.class,String.class,Int.class);
//创建对象并设置属性
Person p1 = (Person)c.newInstnce("李四","男",20);