Всем привет.
Есть вот такой класс:
import java.lang.*;
import java.util.*;
public class A {
public static void main(String[] args){
List<Object> list = makeList(args);
operationWithList1(list);
operationWithList2(list);
System.exit(0);
}
private static List<Object> makeList(String[] args) {
System.out.println("init list if args is not empty");
if(args.length > 0) {
return new ArrayList<Object>();
}
return null;
}
private static void operationWithList1(List<Object> list) {
System.out.println("operationWithList1 ...");
if(list == null){
list = new ArrayList<Object>();
}
list.add(1);
list.add(2);
System.out.println("list is exists!");
for(int i = 0; i < list.size(); i++) {
System.out.println("\tlist item[" + i + "] = " + list.get(i));
}
}
private static void operationWithList2(List<Object> list) {
System.out.println("operationWithList2 ...");
for(int i = 0; i < list.size(); i++) {
System.out.println("\tlist item[" + i + "] = " + list.get(i));
}
}
}
Он компилируется все норм. Собственно вопрос, почему при запуске класса без аргументов
java A
я получаю вот такой вывод?
init list if args is not empty
operationWithList1 ...
list is exists!
list item[0] = 1
list item[1] = 2
operationWithList2 ...
Exception in thread "main" java.lang.NullPointerException
at A.operationWithList2(A.java:37)
at A.main(A.java:10)
P.S. Я знаю как исправить ошибку, но я не понимаю почему она возникает? Просветите меня пожалуйста.