反射:Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法; 并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方 法的功能成为 Java 语言的反射机制。
主要应用于框架
public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, ClassNotFoundException, NoSuchFieldException { //获得Class对象 Class c1 = Class.forName("com.xian.dao.User"); //获取一个对象 User user = (User) c1.newInstance(); //获取构造器 Constructor constructor = c1.getDeclaredConstructor(String.class); User user1= (User) constructor.newInstance("hahaha"); System.out.println(user1.name); User user2= (User) c1.newInstance(); //获取方法 Method setName= c1.getDeclaredMethod("setName", String.class); setName.invoke(user2,"hahah"); System.out.println(user.getName()); //获取相应属性 User user3= (User) c1.newInstance(); Field name=c1.getDeclaredField("name"); //设置私有属性可见,但是会降低效率(安全检查开关) name.setAccessible(true); name.set(user3,"Filed"); System.out.println(user1.getName()); }
1. Class 类:反射的核心类,可以获取类的属性,方法等信息。
2. Field 类:Java.lang.reflec 包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值setAccessible(true)可以设置私有属性可见
3. Method 类: Java.lang.reflec 包中的类,表示类的方法,它可以用来获取类中的方法信息或 者执行方法。
4. Constructor 类: Java.lang.reflec 包中的类,表示类的构造方法。