I'm trying to make a singleton class, but it returns me a new instance every time. Here is my code.
Did I make any mistake? Why does it return a new instance every time?
It should be the same I think.
public final class SingletonA {
private static SingletonA instance;
private SingletonA(){
}
public static SingletonA getInstance() {
if(instance==null)
{
System.out.println("RETURNING NEW INSTANCE OF SingletonA Class");
return new SingletonA();
}
System.out.println("RETURNING OLD INSTANCE OF SingletonA Class");
return instance;
}
}
public class SingletonB {
public static void main(String[] args) {
SingletonA one = SingletonA.getInstance();
System.out.println("1."+one+" | "+one.hashCode());
SingletonA two = SingletonA.getInstance();
System.out.println("2."+two+" | "+two.hashCode());
SingletonA three = SingletonA.getInstance();
System.out.println("3."+three+" | "+three.hashCode());
}
}
// HERE IS THE OUTPUT
RETURNING NEW INSTANCE OF SingletonA Class
1.oop.singleton.SingletonA@2a139a55 | 705927765
RETURNING NEW INSTANCE OF SingletonA Class
2.oop.singleton.SingletonA@15db9742 | 366712642
RETURNING NEW INSTANCE OF SingletonA Class
3.oop.singleton.SingletonA@6d06d69c | 1829164700