2014-12-23 2 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();;   
     } 

    } 


} 

Получения Исключения в потоке «основной» java.lang.NullPointerException на A.main (A.java:28) объекты ALIST адресного пространства класса А сохраняются, но опять итерация не удается получить сохраненные объекты, где хранятся объекты?Java Для каждого назначения объекта цикла не работает

ответ

12

a - локальная переменная цикла for, поэтому присвоение ей не влияет на элементы массива aList.

Вы должны использовать обычный цикл для инициализации массива:

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

Это не то, как усовершенствованный для работы. Вместо этого используйте стандартный для петли:

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

Усовершенствованный для использования Итератор для прокрутки каждого элемента массива. И поскольку ваш массив содержит только нулевые значения, вы получаете исключение NullPointerException.

Смежные вопросы