I was doing research on singleton and I have developed a very basic singleton class..
public class SingletonObject {
    private static SingletonObject ref;
         
        
You can make the singleton constructor public using byte code engineering libraries.
Also, in some older Java versions (this used to work in 1.3), you can simply create a class with the same name, with public constructor and the compile against that class. At runtime this allowed you to create instances of the real class (this loophole has been fixed in the bytecode verification in later JRE versions).