反射-Class对象功能获取Constructor以及Method
Class对象功能_获取Constructor
Constructor构造方法:
创建对象:
T newInstance(Object… initargs)
如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法
public class demo03 { public static void main(String[] args) throws Exception { /* Class对象功能-获取Constructor Constructor<?>[] getConstructors() Constructor<T> getConstructor(Class<?>... parameterTypes) Constructor<?>[] getDeclaredConstructors() Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) Constructor构造方法 创建对象: T newInstance(Object... initargs) 如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法 忽略访问权限修饰符的安全检查 setAccessible(true):暴力反射 */ //0.获取Person的Class对象 Class<Person> personClass = Person.class; //1.Constructor<T> getConstructor(Class<?>... parameterTypes) Constructor<Person> constructor = personClass.getConstructor(String.class, int.class);//获取构造器 System.out.println(constructor); System.out.println("-----------"); Constructor<Person> constructor1 = personClass.getConstructor(); System.out.println(constructor1); //创建有参构造对象 Person person = constructor.newInstance("张三", 23); System.out.println(person); //创建空构造对象 Person person2 = personClass.newInstance(); System.out.println(person2); } }
运行结果:
Class对象功能-获取Method
Method :方法对象:
执行方法:
Object invoke(Object obj,Object... args)
获取方法名称:
String getName:获取方法名
public class demo_04 { public static void main(String[] args) throws Exception { Class<Person> personClass = Person.class; /* Method :方法对象: 执行方法: Object invoke(Object obj,Object... args) 获取方法名称: String getName:获取方法名 */ //获取指定名称的方法(无参构造) Method eat = personClass.getMethod("eat"); //创建对象 Person person = new Person(); //执行方法 eat.invoke(person); //有参构造 Method eat1 = personClass.getMethod("eat", String.class); eat1.invoke(person, "饭"); System.out.println("-----------"); //获取所有public修饰的方法 Method[] methods = personClass.getMethods(); for (Method method : methods) { System.out.println(method); //获取方法名 String name = method.getName(); System.out.println(name); //忽略访问权限修饰符的安全检查 // method.setAccessible(true); } //获取类名 String className = personClass.getName(); System.out.println(className); } }
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix