Прежде всего: будьте внимательны при распаковке: temp относится к типу Integer. Но операция ++ реализована для int. Так что temp распакован, чтобы набрать int. Это означает, что если temp равен null, вы запускаете исключение NullPointerException.
И вы должны сделать это так, как вы распознали в первом блоке кода.