Ошибка при использовании GregorianCalendar. Как исправить?

Рейтинг: 0Ответов: 1Опубликовано: 16.12.2014

Учу java и экспериментирую. Второй час не могу понять, почему код генерирует ошибку. Что исправить?

public class MyApp {
public static void main(String[] args) {
    Stopwatch stw = new Stopwatch();
    stw.setStartTime();
    System.out.print(stw.startTime);
}
}

import java.util.GregorianCalendar;
class Stopwatch {
GregorianCalendar startTime;
void setStartTime() {
    this.startTime.setTimeInMillis(123);
}
}

Exception in thread "main" java.lang.NullPointerException

at Stopwatch.setStartTime(Stopwatch.java:7)

at MyApp.main(MyApp.java:5)

Ответы

▲ 2Принят

Строка

GregorianCalendar startTime;

не создаёт объект GregorianCalendar, она создаёт ссылку, которая в данный момент ни на какой объект не указывает. Поэтому в строке

this.startTime.setTimeInMillis(123);

возникает ошибка, ведь startTime == null, а вызвать метод на null нельзя. Для того, чтобы это предотвратить, необходимо повесить на эту ссылку объект GregorianCalendar:

GregorianCalendar startTime = new GregorianCalendar();