这两个声明有什么区别?

时间:2012-07-17 07:00:27

标签: android mysql jdbc

  

可能重复:
  What is difference between “Class.forName()” and “Class.forName().newInstance()”?

在我的android应用程序中使用jdbc连接连接mysql服务器。在那我想知道差异

`Class.forName("com.mysql.jdbc.Driver");` 

Class.forName("com.mysql.jdbc.Driver").newInstance(); 

以及如何在未连接服务器时设置超时功能?

1 个答案:

答案 0 :(得分:3)

Class.forName()返回一个Class对象 - 一个表示特定Java类的对象。

newInstance() - java.lang.Class的方法 - 将使用所表示的类的无参数构造函数来创建该类的实例。

问题:http://www.coderanch.com/t/385654/java/java/Difference-between-Class-forName-Class参考)

Class.forName()获取对类的引用,Class.forName().newInstance()尝试使用类的无参数构造函数来返回新实例。到目前为止没有惊喜。 Class.forName()的另一个常见用途是使类被加载,因为某些类型的类具有来自加载过程的副作用,这是其他目的所需的。 JDBC是此过程的大用户,因为Driver类在加载时需要使用DriverManager类注册自己。

在Java的黑暗时期,可能是v1.1.8,但可能是Java 1.2,但是有一个问题是默认ClassLoader在创建实例之前不会加载Class。在这些情况下,如果您使用Class.forName()而不是Class.forName().newInstance(),则JDBC代码将失败。

虽然newInstance()会创建一个立即丢弃的实例,但需要使Class.forName()正常工作。不再需要这种解决方法。