请问 forName( xxx.class ) 这个方法在这样执行之后,在系统里都做了什么?

解决方案 »

  1.   

    好像是给类进行初始化,但是初始化的时候唯一能有点作用的可能就是static method了吧?
      

  2.   

    同意楼上的观点
    forName是装载驱动类,初始化一些资源,实例化一些static,native方法吧(不确定,jdk源码没写多详细)这样下面的DriverManager.getConnection()才能够取得数据库连接
      

  3.   

    这个是java反射机制里的方法,大概是初始化类,具体可查反射机制资料
      

  4.   

    一颗星星也问这种问题哦,狂汗。Java编程思想有一小段讲到这个,2年前大二刚学java,看了半天没弄懂啥意思。
    现在大四毕业,还是没看懂。
      

  5.   

    调用了里面的static段,注册驱动
      

  6.   

    应该是ClassLoader在干什么~~觉得涉及JVM底层在工作了
      

  7.   

    执行的内容是:如果类中包含
     
    static
    {};程序块,那么这段程序将被执行。如果存在 static 变量,那么这个变量将会被初始化。
      

  8.   

    一颗星问这种问题有点不应该吧,这应该是基础知识啊。class.forName()会装载类(如果这个类还没有被装载的话),即,给类对象分配空间(注意每个类其实也是一个Class对象),初始化static成员,再顺序执行各个static { }块中的代码。如果你想让JVM装载类,但又不想去建立一个类的实例的话,就应该用这种方法。class.forName()以后,就可以引用类的static成员并调用static方法了。
      

  9.   

    forName public static native Class forName(String className) throws ClassNotFoundException返回给定的字符串名对应的 Class 对象。 若给定一个类或接口的完整路径名,那么此方法将试图定位、装载和连接该类。若成功,返回该类对象。否则,抛出 ClassNotFoundException 异常。 
    例如,下面代码段返回名为 java.lang.Thread 的运行 Class 描述器。 Class t = Class.forName("java.lang.Thread") 参数: 
    className - 期望类的全路径名。 返回值: 
    指定名的 Class 描述器。
     
    抛出: ClassNotFoundException 
    如果没有发现该类。 
      

  10.   

    连接数据库时用它来加载JDBC驱动吧
      

  11.   

    明白了,多謝樓上的各位。用Class.forname()的效率很高嗎?
    不知道爲什麽各公司的JDBC驅動都要由它來註冊。