/**
* Testing singleton creation and clean instance
*
*/
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
ASingletonClass a = ASingletonClass.getInstance ( ) ;
System .
out .
println ( "Instance reference of a: " + a
) ; ASingletonClass b = ASingletonClass.getInstance ( ) ;
System .
out .
println ( "Instance reference of b: " + b
+ " which is equal to a" ) ; b.clear ( ) ;
System .
out .
println ( "Instances are still same" ) ; System .
out .
println ( "Instance reference of a: " + a
) ; System .
out .
println ( "Instance reference of b: " + b
+ " which is equal to a" ) ;
System .
out .
println ( "After getting instances again, the references changed:" ) ; a = ASingletonClass.getInstance ( ) ;
System .
out .
println ( "Instance reference of a: " + a
) ; b = ASingletonClass.getInstance ( ) ;
System .
out .
println ( "Instance reference of b: " + b
+ " which is equal to a" ) ;
}
}
class ASingletonClass
{
private static ASingletonClass instance = null ;
private ASingletonClass( ) { }
public static ASingletonClass getInstance( )
{
if ( instance == null )
instance = new ASingletonClass( ) ;
return instance;
}
public static void clear( )
{
instance = null ;
}
}
LyoqCiAqIFRlc3Rpbmcgc2luZ2xldG9uIGNyZWF0aW9uIGFuZCBjbGVhbiBpbnN0YW5jZSAKICogCiAqLwppbXBvcnQgamF2YS51dGlsLio7CmltcG9ydCBqYXZhLmxhbmcuKjsKaW1wb3J0IGphdmEuaW8uKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJQVNpbmdsZXRvbkNsYXNzIGEgPSBBU2luZ2xldG9uQ2xhc3MuZ2V0SW5zdGFuY2UoKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkluc3RhbmNlIHJlZmVyZW5jZSBvZiBhOiAiK2EpOwoJCUFTaW5nbGV0b25DbGFzcyBiID0gQVNpbmdsZXRvbkNsYXNzLmdldEluc3RhbmNlKCk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJJbnN0YW5jZSByZWZlcmVuY2Ugb2YgYjogIitiKyIgd2hpY2ggaXMgZXF1YWwgdG8gYSIpOwoJCWIuY2xlYXIoKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkluc3RhbmNlcyBhcmUgc3RpbGwgc2FtZSIpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiSW5zdGFuY2UgcmVmZXJlbmNlIG9mIGE6ICIrYSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJJbnN0YW5jZSByZWZlcmVuY2Ugb2YgYjogIitiKyIgd2hpY2ggaXMgZXF1YWwgdG8gYSIpOwoKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkFmdGVyIGdldHRpbmcgaW5zdGFuY2VzIGFnYWluLCB0aGUgcmVmZXJlbmNlcyBjaGFuZ2VkOiIpOwoJCWEgPSBBU2luZ2xldG9uQ2xhc3MuZ2V0SW5zdGFuY2UoKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkluc3RhbmNlIHJlZmVyZW5jZSBvZiBhOiAiK2EpOwoJCWIgPSBBU2luZ2xldG9uQ2xhc3MuZ2V0SW5zdGFuY2UoKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIkluc3RhbmNlIHJlZmVyZW5jZSBvZiBiOiAiK2IrIiB3aGljaCBpcyBlcXVhbCB0byBhIik7CgoJfQp9CgpjbGFzcyBBU2luZ2xldG9uQ2xhc3MKeyAKICAgIHByaXZhdGUgc3RhdGljIEFTaW5nbGV0b25DbGFzcyBpbnN0YW5jZSA9IG51bGw7IAogIAogICAgcHJpdmF0ZSBBU2luZ2xldG9uQ2xhc3MoKSB7fSAKICAKICAgIHB1YmxpYyBzdGF0aWMgQVNpbmdsZXRvbkNsYXNzIGdldEluc3RhbmNlKCkgCiAgICB7IAogICAgICAgIGlmIChpbnN0YW5jZSA9PSBudWxsKSAKICAgICAgICAgICAgaW5zdGFuY2UgPSBuZXcgQVNpbmdsZXRvbkNsYXNzKCk7IAogICAgICAgIHJldHVybiBpbnN0YW5jZTsgCiAgICB9IAogICAgcHVibGljIHN0YXRpYyB2b2lkIGNsZWFyKCkKCXsKCQlpbnN0YW5jZSA9IG51bGw7Cgl9Cn0=