java反射
★ 每一个对象运行时都有一个对应的Class对象,Class(查API)的获取有三种方式:
① 已有对象,调用对象的getClass方法(Object类中的getClass方法)
② 类型.class
③ 不知道对象,只有对象的全限名字符串Class.forName(String className)
★ Class重点掌握方法:
Class.forName("org.wdl.bean.User"):根据全限名获得Class对象
newInstance():通过Class创建实例,相当于调用无参数构造器创建实例
public static void main(String[] args)throws Exception { /** * 反射介绍: * java反射机制是在运行状态中 * 对于任意一个类,都能知道该类的所有属性和方法 * 对于任意一个对象,都能调用他的任意的一个方法和属性 * 这种动态获取的信息以及动态调用对象的方法的功能称之为java语言的反射机制 * * 想解剖一个类,必须要获取到该类的字节码文件class文件, * 二解剖类中的各个成分使用的就是Class类的方法 * * 其实反射就是把java类中的各个成分映射成为一个个的java对象 */ //获取class对象的三种方式 Class<?> clazz1 = Person.class; //使用对象的权限定名 ->idea 复制类路径:右键Copy Reference Class<?> clazz2 = Class.forName("Person"); // //已有对象,调用对象的getClass方法 Person person = new Person(); Class<?> clazz3 = person.getClass(); System.out.println(clazz1); System.out.println(clazz2); System.out.println(clazz3); /** * 输出: * class Person * class Person * class Person */ System.out.println(clazz1==clazz2);//true 表示他们是同一个对象的引用 Object person1 = clazz1.newInstance(); Object person2 = clazz2.newInstance(); Object person3 = clazz3.newInstance(); System.out.println(person1==person2);//false 表示创建不同的对象的实例 }