Java中instance的⽤法详解
关于对象的实例化⼤家想到的通常是直接new,除了这个,还有些单实例模式,层次间调⽤等等
getInstance的使⽤:
* 在主函数开始时调⽤,返回⼀个实例化对象,此对象是static的,在内存中保留着它的引⽤,即内存中有⼀块区域专门⽤来存放静态⽅法和变量,
* 可以直接使⽤,调⽤多次返回同⼀个对象。
getInstance 和 new的区别;
⼤部分类都可以⽤new,new就是通过⽣产⼀个新的实例对象,或者在栈上声明⼀个对象,每部分的调⽤
*都是⽤的⼀个新的对象
getInstance在单例模式(保证⼀个类仅有⼀个实例,并提供⼀个访问它的全局访问点)的类中常见,⽤来⽣成唯⼀的实
例,getInstance往往是static的。
public abstract class TestInstance {
static int i = 1;
public static TestInstance getInstance() {
System.out.println(i++);
return null;
}
}
public class TestGetInstance {
public static void main(String[] args) {
TestInstance ins1 = Instance();
TestInstance ins2 = Instance();
}
}
使⽤实例,在定义的新类当中加⼊getInstance()⽅法,返回值即为该类的⼀个对象,此⽅法常常应⽤在Java的单例模式当中public class OAuthConstant {
public static synchronized OAuthConstant getInstance(){
if(instance == null)java单例模式双重锁
instance = new OAuthConstant();
return instance;
}
}
//主函数当中使⽤此类的getInstance()函数,即可得到系统当前已经实例化的该类对象,若当前系统还没有实例化过这个类的对象,则调⽤此类的构造函数
//实例化⼀个对象,并返回
(1) 对象使⽤之前通过getInstance得到⽽不需要⾃⼰定义,⽤完之后不需要delete;
(2)new ⼀定要⽣成⼀个新对象,分配内存;getInstance() 则不⼀定要再次创建,它可以把⼀个已存在的引⽤给你使⽤,这在效能上优于new;
(3) new创建后只能当次使⽤,⽽getInstance()可以跨栈区域使⽤,或者远程跨区域使⽤。所以getInstance()通常是创建static 静态实例⽅法的。
(4)对于抽象类,是只能⽤getInstance()⽅法,是不能new出来的,
总结:
getInstance这个⽅法在单例模式⽤的甚多,为了避免对内存造成浪费,直到需要实例化该类的时候才将其实例化,所以⽤getInstance来获取该对象,
⾄于其他时候,也就是为了简便⽽已,为了不让程序在实例化对象的时候,不⽤每次都⽤new关键字,索性提供⼀个instance ⽅法,不必⼀执⾏这个类就
初始化,这样做到不浪费系统资源!
单例模式可以防⽌数据的冲突,节省内存空间
到此这篇关于Java中instance的⽤法详解的⽂章就介绍到这了,更多相关Java中instance⽤法内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论