反射机制-new Instance()
反射机制获取到Class,作用:
- 通过Class的newInstance()方法来实例化对象。
- 注意:newInstance()方法内部实际上调用了无参数构造方法,必须保证无参构造存在才可以。
public class ReflectTest02 { public static void main(String[] args) { // 以反射机制的方式创建对象。 try { // 通过反射机制,获取Class,通过Class来实例化对象 Class c = Class.forName("com.java.bean.User"); // c代表User类型。 // newInstance() 这个方法会调用User这个类的无参数构造方法,完成对象的创建。 // 重点是:newInstance()调用的是无参构造,必须保证无参构造是存在的! Object obj = c.newInstance(); System.out.println(obj); // com.bjpowernode.java.bean.User@10f87f48 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } } }
user实例化对象
- 必须提供无参构造:否则反射calss会出现异常
public class User { public User(){ System.out.println("无参数构造方法!"); } // 定义了有参数的构造方法,无参数构造方法就没了。 public User(String s){ } }
Class.forName() :
- 如果希望一个类的静态代码块执行,其它代码一律不执行;
- 使用:Class.forName("完整类名"); 这个方法的执行会进行类加载,类加载时,静态代码块执行。
public class MyClass { // 静态代码块在类加载时执行,并且只执行一次。 static { System.out.println("MyClass类的静态代码块执行了!"); } }
public class ReflectTest04 { public static void main(String[] args) { try { // Class.forName()这个方法的执行会进行:类加载。 Class.forName("com.java.reflect.MyClass"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix