Class.forName()的作用
2013-03-25 12:50
218 查看
package j13_5;
public class Main {
static{
System.out.println("Class Main loaded");
}
public Main(){
System.out.println("create a instance of A");
}
public static void main(String[] args) throws Exception{
Class.forName("j13_5.Main");
}
}
输出:
Class Main loaded
create a instance of Main
从这里可以看的出, Class.forName()是能使Main类中的static block中的命令执行。
package j13_5;
public class Main {
static{
System.out.println("Class Main loaded");
}
public Main(){
System.out.println("create a instance of Main");
}
public static void main(String[] args) throws Exception{
//Class.forName("j13_5.Main");
Main a = new Main();
Main b = new Main();
}
}
输出:
Class Main loaded
create a instance of Main
create a instance of Main
从这里可以看出,new也会使Main类中的static block中的命令执行,不过只执行一次。
我想说明的是连接MySql数据库的时候,Class.forName("com.mysql.jdbc.Driver")的作用,执行static block中的命令,其目的是为了使将Driver对象注册到DriverManager中,保证相应的Driver类已经被加载到 jvm中。
public class Main {
static{
System.out.println("Class Main loaded");
}
public Main(){
System.out.println("create a instance of A");
}
public static void main(String[] args) throws Exception{
Class.forName("j13_5.Main");
}
}
输出:
Class Main loaded
create a instance of Main
从这里可以看的出, Class.forName()是能使Main类中的static block中的命令执行。
package j13_5;
public class Main {
static{
System.out.println("Class Main loaded");
}
public Main(){
System.out.println("create a instance of Main");
}
public static void main(String[] args) throws Exception{
//Class.forName("j13_5.Main");
Main a = new Main();
Main b = new Main();
}
}
输出:
Class Main loaded
create a instance of Main
create a instance of Main
从这里可以看出,new也会使Main类中的static block中的命令执行,不过只执行一次。
我想说明的是连接MySql数据库的时候,Class.forName("com.mysql.jdbc.Driver")的作用,执行static block中的命令,其目的是为了使将Driver对象注册到DriverManager中,保证相应的Driver类已经被加载到 jvm中。
package com.mysql.jdbc public class Driver extends NonRegisteringDriver implements java.sql.Driver { // ~ Static fields/initializers // --------------------------------------------- // A // Register ourselves with the DriverManager // static { t ry { //使将Driver对象注册到DriverManager中 java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } } // ~ Constructors // ----------------------------------------------------------- /** * Construct a new driver and register it with DriverManager * * @throws SQLException * if a database error occurs. */ public Driver() throws SQLException { // Required for Class.forName().newInstance() } }
相关文章推荐
- Class.forName()的作用
- 使用JDBC时Class.forName()的作用
- Class.forName的作用以及为什么要用它
- 使用JDBC时Class.forName()的作用
- java中的Class.forName的作用
- Java面试题之Class.forName的作用
- Class.forName的作用以及为什么要用它
- Class.forName的作用以及为什么要用它【转】
- Class.forName的作用以及为什么要用它
- [转]Class.forName()的作用与使用总结
- java下Class.forName的作用是什么,为什么要使用它
- Class.forName的作用以及为什么要用它【转】
- Class.forName的作用以及为什么要用它【转】
- Class.forName的作用以及为什么要用它
- Class.forName的作用以及为什么要用它【转】
- Class.forName的作用以及为什么要用它
- java中的Class.forName的作用
- Class.forName的作用以及为什么要用它
- Class.forName()的作用与使用总结
- 使用JDBC时Class.forName()的作用