动态加载类:在运行阶段加载类。
典型的例子是:Class.forName("java.lang.Number");
静态加载类:在编译时刻加载类。
典型的例子是:new Number();
两者有什么区别呢?
静态加载的类,在编译阶段就需要提供,不提供编译器会报错。比如源程序中Student s = new Student();,如果源程序中没有定义Student类,那么编译器就会报错。
动态加载的类,在编译阶段可以缺席,编译器不会报错,在运行阶段需要提供。比如源程序中Class c = Class.forName("com.shawn.student");,如果源程序中并没有定义Student类,编译器并不会报错,可以通过编译。