自从JDK1.2以来,提供了另一个class的forName()方法,起方法声明为: static Class forName(String name, boolean initialize, ClassLoader loader)以方便在程序中,动态加载一个类.第一个参数即为你想要加载的类的类名,第二个是初始化选项,如果为true,则加载后自动链接和初始化,否则就不链接.最后一个是类的加载器,可以是系统加载器,也可以是其他的. 加载完成以后,你可以使用加载近来的类并调用其方法,也可以使用Method.invoke()方法来调用类中的方法,这样会使代码更具通用性.谢谢
Class cl = Class.forName("com.xxx"); XXXObject xx = (XXXObject)cl.newInstance();//调用没有参数的构造方法 或是采用ClassLoader来进行(该方法在很多情况下是很有用的,例如在Servlet中或是在EJB中) Class cl = classLoader.loadClass("com.xxx"); 如果你的类构造方法中有参数,可以采用Constructor类来创建,具体参考Class类。
Manager manager = (Manager)class.forName( className ).newInstance();
static Class forName(String name, boolean initialize, ClassLoader loader)以方便在程序中,动态加载一个类.第一个参数即为你想要加载的类的类名,第二个是初始化选项,如果为true,则加载后自动链接和初始化,否则就不链接.最后一个是类的加载器,可以是系统加载器,也可以是其他的.
加载完成以后,你可以使用加载近来的类并调用其方法,也可以使用Method.invoke()方法来调用类中的方法,这样会使代码更具通用性.谢谢
XXXObject xx = (XXXObject)cl.newInstance();//调用没有参数的构造方法
或是采用ClassLoader来进行(该方法在很多情况下是很有用的,例如在Servlet中或是在EJB中)
Class cl = classLoader.loadClass("com.xxx");
如果你的类构造方法中有参数,可以采用Constructor类来创建,具体参考Class类。