java中不是万物皆是对象吗?有特例,大家看看 加载驱动程序不需要创建一个Driver类的实例,调用Class.forName将自动加载Driver类,如果自己创建实例,将创建一个不必要的副本。大家认为呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你Class.forName本身返回的就是一个Class对象,还是对象啊 事实上它已经创建了一个Driver的实例。在进行注册驱动器的时候它已经创建了一个具体的Driver子类实例,把传入. API文档说:static Class<?> forName(String className) Returns the Class object associated with the class or interface with the given string name. 看来果真返回了一个对象啊 Class.forName会创建一个代表Driver类的Class对象。 Class c = Class.forName(String className);c难道不是对象的引用吗? 楼主被欺骗了,其实人家在 Class 里面写了一个 static initialization ,它已经创建了一个 Driver 实例并向 DriverManager 注册过了。不要以为你省了一个对象的内存。比如:MyDriver implements Driver { static { DriverManager.registerDriver(new MyDriver()); }} 7 楼正解在 JDBC 中使用 Class.forName 主要是为了加载那个驱动类,JDBC 规范规定 java.sql.Driver 的实现类必须把自己给实例化,然后把自己注册到 DriverManager 中去。根据类加载的规范,在类加载时会先初始化所有的静态成员、块和方法,因此在使用 Class.forName 时能自动执行 static 块中的代码段,因此 JDBC 规范就用这个目的来达到加载驱动的作用。不过从 JDBC 4.0 规范开始,不再需要 Class.forName 来加载驱动了,其会自动搜索类路径自行加载。 FTPClient的getReplyCode() 这是暴栈了吗? java自动打包与自动拆包 关于大学生对计算机培训的一点看法 JAVA内存管理--关于stack和heap JAVA多维数组问题 InputStream的read方法的问题 JComboBox问题,在线等! 请教一个问题 运动的思想是什么?怎么有点迷惑不解? java输入输出流问题 java要怎么多练习写代码啊?
static Class<?> forName(String className)
Returns the Class object associated with the class or interface with the given string name. 看来果真返回了一个对象啊
c难道不是对象的引用吗?
static {
DriverManager.registerDriver(new MyDriver());
}}