Class.forName(String className);
这个除了表示类的类类型,还表示动态加载类
A a = new A();
而 new 创建对象 是静态加载类,在编译时刻就需要所有的可能使用到的类
动态加载类、静态加载类:
静态加载类:编译时刻加载;
动态加载类:运行时刻加载;
如
class 优快云
{
public static void main(String[] args)
{
try {
Class c = Class.forName("xxx");
优快云Able oa =(优快云Able)c.newInstance();
oa.start();
} catch (Exception e) {
//TODO: handle exception
e.printStackTrace();
}
}
}
interface 优快云Able
{
public void start();
}
当我需要调用其他类的start()时,只要该类引用优快云Able接口并重写start()方法时,就可以调用成功,并不需要编译前写好,只需要在运行前写好该类即可。所以动态加载大大增加了编程的灵活性,我可以先摆着这个类而不去实现。但是用new来创建对象则不能。
以上大部分内容来源于慕课网的”反射——Java高级开发必须懂的”课程,网址是http://www.imooc.com/learn/199,感谢Cedar老师的辛勤付出!

本文对比了Java中动态加载类与静态加载类的区别,重点介绍了Class.forName方法用于动态加载类的过程,以及这种方式如何提高编程灵活性。

被折叠的 条评论
为什么被折叠?



