飞网论坛

标题: 203、Class.forName的作用?为什么要用? [打印本页]

作者: johnny    时间: 2016-9-9 18:26
标题: 203、Class.forName的作用?为什么要用?
203、Class.forName的作用?为什么要用?


答:按参数中指定的字符串形式的类名去搜索并加载相应的类,如果该类字节码已经被加载过,则返回代表该字节码的Class实例对象,否则,按类加载器的委托机制去搜索和加载该类,如果所有的类加载器都无法加载到该类,则抛出ClassNotFoundException。加载完这个Class字节码后,接着就可以使用Class字节码的newInstance方法去创建该类的实例对象了。

有时候,我们程序中所有使用的具体类名在设计时(即开发时)无法确定,只有程序运行时才能确定,这时候就需要使用Class.forName去动态加载该类,这个类名通常是在配置文件中配置的,例如,spring的ioc中每次依赖注入的具体类就是这样配置的,jdbc的驱动类名通常也是通过配置文件来配置的,以便在产品交付使用后不用修改源程序就可以更换驱动类名。







欢迎光临 飞网论坛 (https://bbs.cfei.net/) Powered by Discuz! X3.2