Reputation: 728
I'm using a foreach loop to iterate over an empty array, and populate it with objects. "Case" is a class with several methods and attributes.
My code looks like this:
public class Test {
private Case [] list = new Case[5];
public Case [] test(){
for(Case myCase : list){
myCase = new Case();
}
return list; //This list contains 5 nulls, but should contain five "Case" objects.
}
public static void main(String[] args){
Test myTest = new Test();
myTest.test();
}}
The list which is returned from my method contains 5 nulls, when I expect it to contain 5 instantiated "Case" objects. I suspect this might be some sort of visibility problem, but I can't figure it out.
Upvotes: 3
Views: 62
Reputation: 1354
Also, You don't need to explicitly return the list from the test() method, since it's a field in myTest.
This would work perfectly fine,
public void test(){
for(int i=0;i<5;i++){
this.list[i] = new Case();
}
}
Upvotes: 0
Reputation: 33936
The variable used in a for-each loop is just a reference to the current value of the array element. Assigning to that variable does not affect the values stored in the array. You need to use a for loop like this:
for (int i = 0; i < list.length; i++) {
list[i] = new Case();
}
Upvotes: 9