private关键字作为一个重要的关键字,我们在开发中会经常用到,可是你有没有想过通过private关键字我们可以创建一个别人无法通过new来新建的类呢?下面我们就来看一下:
package returnobject; public class RerurnObject { public static void main(String args[]){ // Test test = new Test(); 通过这一条是无法创建Test对象的 Test test = Test.returnObject(); Test test2 = Test.access(); Test test3 =Test .access(); //虽然编译通过,但是实际并不会新建Test类 Test test4 =Test .access(); //虽然编辑通过,但是实际并不会新建Test类 } } class Test{ private Test(){ System.out.println("成功创建一个Test对象!"); } private static Test test2 = new Test(); public static Test access(){ return test2; } public static Test returnObject(){ return new Test(); } }
正如上面代码所展示的,Test类是无法通过new来新建的,具体的原理是这样的:我们在Test类的构造器(构造方法)前面添加了关键字private,然后这个类就无法被创建了,但是我们可以通过Test类的静态方法来创建Test类,让其返回一个Test类。
可能会有人问了,这样做有什么好处呢?试想一个,如果你想控制新建类(new 类名)的数量,那么这种方法无疑是最好的解决方案!特别是在将test2编程Test的一个静态私有成员(private static)以后,有 一个而且只能有一个。除非通过public 方法access(),否则根本无法访问它。