package com.demo1.refulaction;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
* Created by 聪哥 on 2020/9/23.
*/
public class Paren {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
Class c1=Class.forName("com.demo1.refulaction.Student");
/*Method[] methods = c1.getMethods();//打印公开方法
for (Method mo:methods) {
System.out.println(mo);
}*/
Student student=(Student) c1.newInstance();//创建对象
Constructor declaredConstructor = c1.getDeclaredConstructor(int.class, String.class, double.class);//通过构造器创建对象
Student o = (Student) declaredConstructor.newInstance(1,"小明",12.3);
//通过反射获取一个方法
Method setName = c1.getMethod("setName", String.class);
//invoke:激活反射对象
setName.invoke(student, "小明");
System.out.println(student.getName());
//通过反射操作属性
Field name = c1.getDeclaredField("name");
//不能直接操作私有属性,需要关闭安全检测,影响性能
name.setAccessible(true);
name.set(student,"小王");
System.out.println(student.getName());
}
}
通过反射 动态创建对象
最新推荐文章于 2023-04-24 18:21:44 发布