首页 > 代码库 > 如何保证对象的唯一性
如何保证对象的唯一性
/*如何保证对象的唯一性: 1.不允许其他程序用new来创建该类对象。 2.在该类创建一个本类实例。 3.对外提供一个方法让其他程序可以获取该对象的引用。*/public class Test{ public static void main(String[] args){ //Subject sub = Subject.oSub;//这种方法不可控,一般不访问成员 Subject sub = Subject.getInstance();//我们可以在方法中增加条件,根据条件是否返回对象的引用,增加程序的可控性! new Student().show(sub); new Teacher().show(sub); }}class Subject{ public String sub; public static Subject oSub = new Subject(); private Subject(){ sub = "计算机科学与技术"; } public static Subject getInstance(){ //oSub = new Subject(); //if(****) 增加 if 判断 可以 增加程序的可控性 return oSub; } public String getSubject(){ return sub; } public void setSubjcet(String name){ sub = name; }}/* 静态成员变量和普通成员变量的显示初始化的不同之处: 以下面的例子为例: 静态变量的显示初始化编译之后不会放进 构造函数中!(想一想啊,如果放进了构造函数中,那不就是产生对象了吗?那可能吗? 它是静态的,是属于类的!普通成员变量是属于对象的,所以显示初始化会放进构造函数中)所以不会使构造函数一直调用,最终栈溢出 而普通成员变量的显示初始化编译之后回放进构造函数中, 这样就会导致构造函数一直被反复调用! class Subject{ public String sub; //public Subject ss = new Subject(); public static Subject oSub = new Subject();//恶汉式 //public static Subject oSub = null;//懒汉式 private Subject(){ //oSub = new Subject();//oSub是静态变量,加上这一句就会导致oSub显示初始化时栈溢出! sub = "计算机科学与技术"; } public static Subject getSubject(){ return oSub; //return oSub = new Subject(); }}*/class Student{ public void show(Subject sub){ System.out.println(sub.sub); }}class Teacher{ public void show(Subject sub){ System.out.println(sub.sub); }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。