2025-06-28 16:01

Class.forName()和ClassLoader的区别

码自答

Java后端

(13)

(0)

收藏

Class.forName 和 ClassLoader 都可以用来实现反射。

1    类初始化不同

        Class.forName()在类加载的过程中,执行类的静态代码块,实现类的初始化。包括静态变量赋值,静态程序块的执行。

        ClassLoader 只是加载类,不会执行类的静态代码块。不会初始化。



2    异常处理

        Class.forName()返回 Class 对象,如果类不存在,无法加载,抛出 ClassNotFoundException 异常。

        ClassLoader 需要调用 loadClass()方法返回 Class 对象。如果类不存在,同样抛出 ClassNotFoundException 异常。

Class clazz = Class.forName("com.wanmit.Teacher");

Class clz = ClassLoader.getSystemClassLoader().loadClass("com.wanmait.Teacher");

    

0条评论

点击登录参与评论