Java中如何实现一个类在内存里只能创建一个实例对象
2011-08-24 14:29
801 查看
关键字:限制一个类只能创建一个对象,java类的实例化.
1.如何实现一个类在内存里如论如何只能创建一个实例对象?
2.A类中的方法如何去访问B类中的私有(private)构造方法呢?
针对以上问题,举例说明如下.
①.其他类不能对私有构造方法的所属类进行实例化,但其他类能接受私有构造方法所属类的对象这好比,自己不能产生某种工具,但能接受工具一样,一旦接到工具,工具不会因在不同人的手中而失去原有的功能.
②.对象调用一个方法,若该方法有返回值,这个值会返回到调用点.这好比,力的相互作用(当然,受力方要有弹性),这里的"弹性"寓意是否有返回值.
1.如何实现一个类在内存里如论如何只能创建一个实例对象?
2.A类中的方法如何去访问B类中的私有(private)构造方法呢?
针对以上问题,举例说明如下.
class Onlie { static Onlie o=new Onlie();//创建实例对象并把它赋给静态类型的对象变量o. private Onlie() { System.out.println("这是一个私有构造方法!");//私有构造方法 } public static Onlie retClass() { return o; } /*Onlie是该方法的返回类型.创建这个方法的目的:让Mvt类中用Onlie类名来访问,以此让Mvt类得到Onlie类的实例对象,在Mvt类中虽然不能创建Onlie类的实例对象,原因是:Onlie对象一运行,Onlie类的构造方法也会随之运行,而a类的构造方法是私有的(private),不能被Mvt类访问,所以我们把Onlie类定义成静态的,静态之间调用可以直接用类名.总之,只要在一个类里声明有private构造方法,在别的类中无法对这个类进行实例.这也叫单态模式.retClass方法必须为static型,因为它要被main方法访问,而main方法考虑到Onlie类中有私有构造方法,不能对Onlie类进行实例化.所以main方法只能通过retClass方法的类名调用retClass方法.但,这前提必须是gettffa是静态型的.*/ String huifu() { return "收到了!"; } } class Mvt { public static void main(String[]arges) { Onlie on=Onlie.retClass(); //Onlie.retClass():在Mvt类中的静态方法里,直接用retClass()的类调用retClass().整条语句的作用是接受 //Onlie类的实例对象.但该条语句一运行,就可以实现:在Mvt中调用Onlie类中的private构造方法. String s=on.huifu(); System.out.println("s="+s); Onlie on2=Onlie.retClass(); if(on==on2)//判断on与on2是否相等 { System.out.println("on和on2的内存位置没变,接受的值也没变化"); } else { System.out.println("on和on2的内存位置有变化!"); } } } /* 打印结果: 这是一个私有构造方法! s=收到了! on和on2的内存位置没变,接受的值也没变化 */小结:
①.其他类不能对私有构造方法的所属类进行实例化,但其他类能接受私有构造方法所属类的对象这好比,自己不能产生某种工具,但能接受工具一样,一旦接到工具,工具不会因在不同人的手中而失去原有的功能.
②.对象调用一个方法,若该方法有返回值,这个值会返回到调用点.这好比,力的相互作用(当然,受力方要有弹性),这里的"弹性"寓意是否有返回值.
相关文章推荐
- java中如何理解多个对象共享同一个静态成员变量(多个实例的static变量会共享同一块内存区域)
- Java中如何使某个类的对象唯一性,只能创建一个对象
- 【Java】创建一个对象的步骤(如何加载进内存)(掌握)
- 【Java】【TIJ】实现一个类:不允许用构造方法来直接创建类实例(对象)
- JAVA动态模块的设计实现以及如何通过newInstance()来创建带参的构造类实例
- java思考题:设计一个只能创建一个唯一实例的类。
- 如何控制JAVA中一个类只能生成一个对象?
- 让一个类只能在对上创建对象或者只能在栈上实例化
- XAF中如何实现Action创建一个可以编辑外连接对象的detail
- 单态设计模式--一个类只能创建一个实例(对象)
- java中如何让一个类只能实例一次
- 让一个类只能在对上创建对象或者只能在栈上实例化
- 如何创建一个类只能在堆(栈)上建立对象
- 让一个类只能在对上创建对象或者只能在栈上实例化
- 如何实现同一用户只能存在一个实例?
- 简单工厂(Factory)-提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。
- 如何在SpringMVC框架中利用Java反射机制和Javassist实现Java对象、属性、注解的动态创建生成
- 让一个类只能在对上创建对象或者只能在栈上实例化
- java如何创建一个指定的日期对象
- Java之对象的创建和使用的一个实例分析