Files
spring-security-series/Java Design Patterns/javadevjournal/design/creational/singleton/breakit/BreakSingletonUsingReflection.java
2022-03-20 09:31:02 -07:00

28 lines
939 B
Java

package javadevjournal.design.creational.singleton.breakit;
import java.lang.reflect.Constructor;
/**
* @author Kunwar
*/
public class BreakSingletonUsingReflection {
public static void main(String[] args) {
Singleton singleton1 = Singleton.instance;
Singleton singleton2 = null;
try {
Constructor[] constructors =
Singleton.class.getDeclaredConstructors();
for (Constructor constructor : constructors) {
// Below code will destroy the singleton pattern
constructor.setAccessible(true);
singleton2 = (Singleton) constructor.newInstance();
break;
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("instance1.hashCode(): " + singleton1.hashCode());
System.out.println("instance2.hashCode(): " + singleton2.hashCode());
}
}