Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Этот сценарий Автогорячей клавиши, когда Вы нажимаете ctrl + k , будет ожидать Вас для нажатия клавиши и если Вы нажмете d , то это введет текущую дату.
^k::
Input Key, L1
FormatTime, Time, , yyyy-MM-dd
if Key = d
Send %Time%
return
Небольшая вариация на принятый ответ - это - то, что я закончил тем, что использовал. Я получаю Ctrl+LWin (оставленный ключ Windows), таким образом, он не конфликтует с VS встроенные ярлыки Ctrl-K.
; Capture Ctrl+Left Windows Key
^LWin::
; Show traytip including shortcut keys
TrayTip, Ctrl-Win pressed - waiting for second key..., t: current time`nd: current date, 1, 1
; Capture next string input (i.e. next key)
Input, Key, L1
; Call TrayTip with no arguments to remove currently-visible traytip
TrayTip
if Key = d
{
FormatTime, Date, , yyyyMMdd
SendInput %Date%
}
else if Key = t
{
FormatTime, Time, , hhmmss
SendInput %Time%
}
return