Java Design patterns
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user