new与instance
new与getinstance
-
new:
- 一定要生成一个新对象,分配内存
- 创建后只能当次使用
- 是直接调用构造方法
-
getinstance
- 是方法
- 不一定要再次创建,可以把一个已存在的引用给你使用,这个在性能上优于new
- 可以跨栈区域使用,或者远程跨区域使用。所以getInstance()通常是创建static静态实例方法的
- 多用于单例模式
- 对于抽象类要想对其实例化,只能使用getInstance方法,是不能new出来的。
new和newInstance
-
new
- 直接创建一个类、不需要这个类加载过
- 强类型(GC不会自动回收,只有所有的指向对象的引用被移除是才会被回收,若对象声明周期已经结束,但引用没有被移除,经常会出现内存溢出)
-
newInstance
- 使用类加载机制创建对象
- 创建类是这个类必须已经加载过且已经连接
- 弱类型(GC是回收对象的限制条件很低,容易被回收)、低效率、只能调用无参构造。
实现接口的类加载一般采用newInstance而不会使用new