2014-11-06 7 views
-1

Я хочу написать csv с помощью библиотеки opencsv, однако при запуске кода я получаю NullPointerException.NullPointerException при записи файла csv

public void exportToCSV(ArrayList<Data> list) throws IOException { 
     log.info("write CSV file"); 

     String writerPath = "C:\\Users\\User\\Desktop\\Output\\output.csv"; 

     CSVWriter writer = new CSVWriter(new FileWriter(writerPath), ';'); 

     //headers 
       String [] entries = {"ID", "Date"}; 

     writer.writeNext(entries); 

     List<String[]> data = new ArrayList<String[]>(); 
     for (int m = 0; m < list.size(); m++) { 
      data.add(new String[] { 
        list.get(m).getID, 
        (list.get(m).getDate().toString()==null) ? "null" : list.get(m).getDate().toString(), //Here i get the NullPointerException 
      }); 
     } 
     writer.writeAll(data); 
     writer.close(); 
    } 

Я думаю, что getDate() имеет нулевое значение, какой тип является Timestamp. Однако почему мое предлагаемое решение не работает в письменной форме String, когда getDate() является null.

Я приветствую ваш ответ!

+0

Почему вы «догадываетесь». в какой строке было выбрано исключение? вы использовали отладчик, чтобы увидеть, что на самом деле является нулевым? – gefei

+0

Потому что getDate() возвращает null, вы не можете вызвать toString() на нем. Duh. –

+0

См. Также ['NullPointerException'] (http://docs.oracle.com/javase/7/docs/api/java/lang/NullPointerException.html), где почти самая первая строка документации -« Вызов экземпляра метод нулевого объекта. " –

ответ

1

list.get(m).getDate().toString()==null следует изменить на list.get(m).getDate()==null.

Если list.get(m).getDate() является null. Вызов метода на него вызовет NullPointerException.

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