Class.forName("com.mysql.jdbc.Driver")的问题
发布网友
发布时间:2024-10-02 09:26
我来回答
共4个回答
热心网友
时间:2024-11-19 22:30
new一个实例出来实际上是两步完成,加载类到jvm,执行静态方法,最后才能得到实例。
Class.forName("com.mysql.jdbc.Driver");就是只完成加载和静态方法的执行,Class.forName("com.mysql.jdbc.Driver").newInstance()则包含第一种方法的过程,并返回一个实例,但是其实没必要,因为你并没有去直接使用这个实例。连接mysql你需要做的只是保证driver加载到内存中了。
热心网友
时间:2024-11-19 22:30
个人认为二者都能生成一个实例
比如你定义一个类
里边有构造方法
同时可以再定义一个方法newInstance()--单例模式,让这个方法返回这个类的一个实例
这样构造方法和返回实例的方法不就都能生成实例了。
热心网友
时间:2024-11-19 22:31
newInstance就只是返回一个该类实例化的对象。
public Driver{
public Dirver(){}
public Driver newInstance(){
return new Dirver();
}
}大致就是这样,你可以选择是直接new一个对象,还是用函数调用的方式产生一个对象。
像newInstance()这种符合工厂模式的函数是为了降低系统耦合度而设计的。具体来说,就是通过函数的方法来注入依赖值,而不是手动的new出来。
补充:看来楼主没仔细看,我那上面的代码不说明一切了么,用Class.forname就是加载它的对象而已,用newInstance也是返回他的对象,还需要说什么?
热心网友
时间:2024-11-19 22:31
只要能成功就够了!!!