package com.sunny.core.sunnycore.ssm; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @Description: TODO * @Author Lg * @Date 2022/3/30 */ @Data @NoArgsConstructor @AllArgsConstructor public class User { private String name; private int age; private String sex; }
package com.sunny.core.sunnycore.ssm; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @Description: TODO * @Author Lg * @Date 2022/3/30 */ public class ReflectionTest { public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException { //获取class对象 Class aClass = Class.forName("com.sunny.core.sunnycore.ssm.User"); //获取User对象 User user1 = (User) aClass.newInstance(); System.out.println(user1); //通过构造器获取对象 Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class, int.class, String.class); User user2 = (User) declaredConstructor.newInstance("Lg", 25, "男"); System.out.println(user2); //通过反射调用方法 Method setName = aClass.getDeclaredMethod("setName", String.class); setName.invoke(user1,"张三"); System.out.println(user1); setName.invoke(user2,"李四"); System.out.println(user2); System.out.println("---------------"); //通过反射操作属性 User user3 = (User) aClass.newInstance(); Field name = aClass.getDeclaredField("name"); //不能直接操作私有属性,需要关闭程序的安全检测,通过设置setAccessible(true) name.setAccessible(true); name.set(user3,"王五"); System.out.println(user3); } }
结果:

浙公网安备 33010602011771号