初始化类
生成
实例
时候
newInstance()方法和new关键字除了
方法
关键字外
主要有
区别
们
区别
于创建对象
方式
样
前者
使用类加载机制
者
创建
新类
会有两种创建对象方式
主要考虑
软件
伸缩、
扩展和
重用等软件设计思想
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(driver).newInstance();解析
最新推荐文章于 2024-06-04 15:12:26 发布