Hacking By Reflection: Creating Multiple instance of a Singleton class

Singleton.java implements a thread safe singleton instance creation for this class. Even if multiple threads are accessing this should create only one instance of class.

package hacking;

public class Singleton {

private Singleton(){

System.out.println("I am Singleton");


private static Singleton s = new Singleton();

public static Singleton getInstance(){

return s;



Test.java file hacking the Singleton class to create multiple instances.

package hacking;

import java.lang.reflect.Constructor;

public class Test {

public static void main(String[] args) throws Exception {

Singleton s = Singleton.getInstance();

Constructor c[] = Singleton.class.getDeclaredConstructors();





Here is the output of this program

 $  java Test

I am Singleton

I am Singleton

The private constructor is called for second time also, that means the class is not singleton anymore.

Post a Comment Default Comments