При разработке в AS с Java ниже строка показывает предупреждение, что toggleSoftInput
может производить NPE.Что весьма полезно, если вы забыли проверку NPE.
InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(....);
Но в случае с Kotlin это становится проблемой.Приведение с as
означает, что IDE не потрудится проверить, может ли toggleSoftInput()
производить NPE или нет, потому что as
неявно подразумевает это.
val imm = mContext.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.toggleSoftInput()
Как только я использую безопасное приведение as?
, IDEпредупреждает меня сделать безопасный вызов на imm
, как это может быть null
.
Общий вопрос: Что, если разработчик забудет выполнить безопасное приведение, не является ли это безопасным приведением Kotlinнеявно убивает дружественные пользователю возможности IDE, или я что-то упускаю?
Конкретный вопрос: Есть ли какой-нибудь возможный способ решения этих проблем, кроме как не забывать безопасное приведение?:)