java之new和newInstance详细分析
java接口有没有构造方法⽬录
前⾔
两者都是⽤来实例化对象
但具体的应⽤场景和表现形式却不⼀样
1. 功能特点
1. new:
强类型,不会⾃动被GC垃圾回收(⽣命周期结束回收)、⾼效率
2. newInstance:
弱类型、容易被GC垃圾回收、⽆参构造、低效率
可以实现IOC、反射、⾯向接⼝编程
具体两者对⽐
new是实例对象⽽newInstance是实⽤类的加载机制
new不⽤加载过就可⽤⽽newInstance需要加载并且有连接才可⽤
此处涉及GC垃圾回收可看我上⼀篇⽂章
此处重点讲解newInstance
newInstance实例化对象是只能调⽤⽆参构造⽅法
接⼝类实现类没有构造⽅法,系统默认会配置⽆参构造,如果接⼝实现类有有参构造函数,则必须重写⼀个⽆参构造函数才可⽤newInstance
具体实操可看下⽅
2. 代码讲解
Java中⼯⼚模式经常使⽤newInstance来创建对象
主要通过使⽤类加载器并且连接
代码为class的静态⽅法forName()⽅法
调⽤class的静态加载⽅法forName时获得更好的
灵活性,提供给了我们降耦的⼿段
Class c = Class.forName(“A”);
AInterface xx =(wInstance();
上述代码中 A继承了AInterface,才可执⾏这些代码
还可这样执⾏
String className = “A”;
Class c = Class.forName(className);
AInterface xx =(wInstance();
具体className都是在xml中获取字符串
String className = xml配置⽂件名;//从xml 配置⽂件中获得字符串
Class c = Class.forName(className);
AInterface xx =(wInstance();
通过该代码也可看出
new 和 newInstance 具有相同的作⽤
具体不同场景使⽤不同创建对象⽅式
3. 实战开发
通过jdbc配置⽂件jdbc.properties获取类名
jdbc.properties 配置⽂件中书写className=sql
运⽤反射机制,类加载⽂件调⽤对象⽅法
ResourceBundle Bundle("jdbc"); String String("className")
Class c = Class.forName(className);
JDBC jdbc =(wInstance();
//以下代码是⾯向接⼝调⽤⽅法,不需要修改

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。