必须是Singleton.class,不能为Object类型的变量。
1.先从内存角度来说:
因为getInstance()是静态方法,Singleton的类变量singleton也用static修饰,它们都随类的创建存在于栈内存中。
而Object类的变量是对象创建以后进入堆内存的。二者的位置都不一样,怎么关联上?
2.从程序的角度来说,
共享资源singleton和方法getInstance()都是static的,Singleton类进内存的时候先封装成字节码文件对象,接着共享资源singleton进入内存也变成一个字节码文件对象。
在这个区域里面没有本类对象,但是一定有类对应的字节码文件对象存在,而类的字节码又只有一份,所以用Singleton.class作为同步锁 |