@Data @NoArgsConstructor @AllArgsConstructor public class QueueTest { private
String date = "2021"; private int number; } public class GetBean { static
String path = "com.test.queue.QueueTest"; // 反射获取类的类名、属性名、属性类型、方法、执行方法、构造函数
public static void start() throws Exception { Class clazz =
Class.forName(path); /** * 获取类名 */ // 获取完整类名com.skd.queue.QueueTest String
strName01 = clazz.getName(); // 直接获取类名 QueueTest String strName02 =
clazz.getSimpleName(); /** * 获取属性 */ // 返回属性为public的字段 Field[] field01 =
clazz.getFields(); // 返回所有的属性 Field[] field02 = clazz.getDeclaredFields(); //
获取属性为id的字段 Field field03 = clazz.getDeclaredField("date"); /** * 获取普通方法 */ //
返回public方法 Method[] Method01 = clazz.getDeclaredMethods(); //
返回getDate这个方法,如果没有参数,就默认为null Method method =
clazz.getDeclaredMethod("getDate", null); /** * 获取构造方法 */ //
获取无参的构造函数这里的前提的保证类中应该有无参的构造函数 QueueTest u1 = (QueueTest) clazz.newInstance();
// 获取参数为(String,int)的构造函数 Constructor c2 =
clazz.getDeclaredConstructor(String.class, int.class); // 通过有参构造函数创建对象
QueueTest u2 = (QueueTest) c2.newInstance("小小", 18); // 通过反射调用普通方法 QueueTest u3
= (QueueTest) clazz.newInstance(); Method method03 =
clazz.getDeclaredMethod("setDate", String.class); // 把对象u3的date设置为8888
method03.invoke(u3, "8888"); // 通过反射操作普通的属性 QueueTest u4 = (QueueTest)
clazz.newInstance(); Field f = clazz.getDeclaredField("date"); // 设置属性可以直接的进行访问
f.setAccessible(true); f.set(u4, "石头"); } }

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信