关于Class.forName(driverName).newInstance();
来源:互联网 发布:mac登陆新浪微博 编辑:程序博客网 时间:2024/05/30 12:03
Class.forName(driverName).newInstance();
Class.forName(driverName);
这二中方式有什么区别!
Class.forName(driverName);
这二中方式有什么区别!
Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。 例如:
class c = Class.forName(“Example”);
factory = (ExampleInterface)c.newInstance();
其中ExampleInterface是Example的接口,可以写成如下形式:
String className = "Example";
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
进一步可以写成如下形式:
String className = readfromXMlConfig;//从xml 配置文件中获得字符串
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();
上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。
从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个 类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载 java API的那个加载器。
现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。
最后用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。
- 关于Class.forName(driverName).newInstance();
- 关于Class.forName(className).newInstance()的理解
- 关于Class.forName(className).newInstance()介绍
- 关于Class.forName(className).newInstance()介绍
- 关于Class.forName(className).newInstance()介绍
- 关于class.forName().newInstance()的作用
- 关于Class.forName(className).newInstance()介绍
- Class.forName newInstance 介绍
- Class.forName(name).newInstance()
- java Class.forName("") .newInstance();
- class.forname().newInstance()
- class.forname().newInstance()
- java Class.forName("") .newInstance();
- class.forname().newInstance() 和 class.forname()
- Class.forName与newInstance方法
- Class.forName().newInstance()与new
- Class.forName new 和newInstance
- new、Class.forName、class.newInstance性能比较
- 强制类型转换的问题
- 在服务器端获取javascript更改lable后的值
- Excel中不可不知的数字
- 使用webBrowser 开发windows mobile 应用程序的小问题
- 《Microsoft SQL Server 2005技术内幕》系列资源汇总
- 关于Class.forName(driverName).newInstance();
- const与const指针
- JDBC
- C#如何打印条形码EAN13码
- 系统调用
- C和C++编程和学习文档
- 常用数据库JDBC连接写法
- javascript 子窗体向父窗体文本框传数据
- 使用EJB3 Java Persistence API标准化Java持久性