Singleton pattern in java can be implemented by the approaches explained here
Now here is the code to break it using reflection
public class NormalClass{ private NormalClass(){ //having private constructor } private void print(){ System.out.println("broken"); } } ///////////////////////////////// public class Main{ public static void main(String[] args) throws InstantiationException, IllegalAccessException, SecurityException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException { Class c = NormalClass.class; final Constructor con = c.getDeclaredConstructor(); System.out.println(con); final Method meth = c.getDeclaredMethod("print", null); //---- You will get IllegalAccessException without this --- AccessController.doPrivileged(new PrivilegedAction() { public Object run() { con.setAccessible(true);// turning off the access check meth.setAccessible(true);// turning off the access check return null; } }); NormalClass n = (NormalClass)con.newInstance(null); meth.invoke(n,null); } }