I've been pulling my hair out with this all day. Probably a newb error of some sort, but I can't get my head around it.
It started out more complicated, but I've simplified it to:
public class Main {
static ArrayList<Selection>[] a = new ArrayList[2];
public static void main(String[] args) {
// Initialise the Selection ArrayList
for (int i=0; i < a.length; i++) {
a[i] = new ArrayList<Selection>();
}
callTest();
}
public static void callTest () {
a[0].add(new Selection(true));
a[1].add(new Selection(false));
System.out.println(a[0].get(0).getTF());
System.out.println(a[1].get(0).getTF());
}
}
class Selection {
private static boolean trueFalse;
public Selection (boolean iTF) {
trueFalse = iTF;
}
public boolean getTF () {
return trueFalse;
}
}
Running the program will return:
false
false
instead of the expected (at least to me):
true
false
Can someone please shed some light on this? It appears that whenever the value held in a Selection object is altered, ALL the Selection objects are altered, even though they have a different object reference. Have I done something silly?