2014-12-23 83 views
2
public class A{ 

    int val;  
    public A(int val){ 
     this.val = val; 
    } 

    public void print() { 
     System.out.println(val); 

    } 


    public static void main(String args[]){ 

     A[] aList = new A[10]; 
     int temp =1; 

     for(A a : aList){ 
      a = new A(temp++);   
     } 

     for(A a : aList){ 
      a.print();;   
     } 

    } 


} 

獲取異常在線程a。主(A.java:28)「主」顯示java.lang.NullPointerException ALIST A地址空間類對象被存儲但再次迭代無法獲取存儲的對象,對象存儲在哪裏?爪哇對於每個循環對象分配不工作

回答

12

a是for循環的局部變量,因此賦值給它不會影響aList數組的元素。

你應該使用常規的循環來初始化數組:

for(int i = 0; i < aList.length; i++){ 
     aList[i] = new A(temp++);   
    } 
3

那不是如何增強了作品。使用一個標準的for循環,而不是:

for(int i = 0; i < aList.length; i++){ 
    aList[i] = new A(temp++);   
} 

增強,用於通過數組的每個元素使用一個迭代循環。由於你的數組只包含空值,你會得到一個NullPointerException。