I enhanced/tested the coding I found on ArrayList initialized/accessed using Singleton class
import java.util.ArrayList;
public class SingletonArrayList {
private static SingletonArrayList mInstance;
private static ArrayList<String> list = null;
public static SingletonArrayList getInstance() {
if (mInstance == null)
mInstance = new SingletonArrayList();
SingletonArrayList.list.add("a");
SingletonArrayList.list.add("b");
SingletonArrayList.list.add("c");
return mInstance;
}
private SingletonArrayList() {
list = new ArrayList<String>();
}
// retrieve array from anywhere
public ArrayList<String> getArray() {
return SingletonArrayList.list;
}
}
Then I made a testclass where I call the above singleton two times:
import java.util.ArrayList;
public class TestSingletonArrayList {
public static void main(String[] args) {
ArrayList<String> array = SingletonArrayList.getInstance().getArray();
for (int i = 0; i < array.size(); i++) {
System.out.println(array.get(i));
}
System.out.println("-----------");
ArrayList<String> array2 = SingletonArrayList.getInstance().getArray();
for (int i = 0; i < array2.size(); i++) {
System.out.println(array2.get(i));
}
}
}
The output is:
a
b
c
-----------
a
b
c
a
b
c
This seems very strange. I expected that the second call of the singleton class will only return a,b,c and NOT a,b,c,a,b,c
What is wrong? I expected only a,b,c as it is a singleton
Thanks, regards Mario