例如有两段程序
//代码1:
import a.b.MyClass;public class test
{
   public static void main(String args[])
   {
     MyClass myclass=new MyClass();
   }}//代码2:
public class test
{
   public static void main(String args[])
   {
     Object obj=Class.forName(a.b.MyClass).newInstance();    
   }
}我的理解是,同样是生成MyClass的实例,两段代码有什么不同呢?有什么情况下用哪个?

解决方案 »

  1.   

    如果在使用的时候肯定是生成 MyClass类,那么没什么区别,一般就用第一种
     
     有的时候需要生成的类不确定,有可能是a.b.c 有可能是 x.y.z这时候可以用参数的形式 传送变量进来,用第二种就可以动态获得类实例, 特别的 forName()还有个用字符串参数的同胞兄弟,数据库驱动类名从配置文件读取时就经常用到
      

  2.   

    forName()还有个用字符串参数的同胞兄弟?是哪个呢?
      

  3.   

    就是forName(String para);,参数是String。
    是用在初始化数据库驱动时用的
      

  4.   

    forname()与实例化压根没有关系,forname("类完全限定名")是利用ClassLoader装载类,并转化为Class类的实例,
    Class实例对象可以调用newInstance()方法实例化一个对象;你用new的方式的话,他也要检查有没有这个类的Class类对象实例,没有的话,
    还是会ClassLoader装载类,再利用C这个lass实例对象来实例该类对象