Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Вы могли использовать Шаблон "посетитель", он позволяет выполнять итерации по Вашему hierachy выполнения различных операций в зависимости от узла, который в настоящее время обрабатывает Посетитель.
Плохие новости: вероятно, необходимо добавить, по крайней мере, виртуальный метод наверху иерархии и возможно переопределить его в некоторых производных классах, и посетитель все еще получает доступ к данным узлов, но Вы отделяете формат файла, поскольку различные реализации посетителей могут записать данные, собранные по-разному.
Смотрите также на шаблон "memento", если сокрытие класса hierachy данные является необходимостью. Эта статья могла также быть полезной.
Править: Свяжите с исходным использованием статьи Шаблона "memento" кэш Google
Вы могли бы хотеть смотреть на шаблон Разработчика. Страница 97 GoF..
Как насчет (что-то на основе) Шаблонный шаблон метода?
Один суперкласс знает, как разорвать иерархию классов, но полагается на ее подклассы, чтобы на самом деле сделать что-то полезное с ним.