Если вы уверены, что intent?.extras?.getSerializable(ARG_FLAG)
никогда не будет null
(а также ни один из промежуточных объектов: intent
и intent.extras
), тогда вы можете оставить все как есть и просто использовать flag.let { ...
вместоflag?.let { ...
.
Если есть вероятность, что любой из них будет null
, тогда вы должны использовать MainFlag?
-тип для своего флага, например:
private var flag : MainFlag? = null // having null in place basically makes the lateinit meaningless and rightfully lateinit does not allow nullable types
flag = intent?.extras?.getSerializable(ARG_FLAG) as? MainFlag
... или рискуйте TypeCastException
при сохранении as MainFlag
.
Причина, по которой Android Studio жалуется на ненужный безопасный вызов, состоит в том, что вы указали тип как ненулевой MainFlag
(косвенно черезваш as MainFlag
-каст).Так что, если вы получаете доступ к flag
, он уже должен быть там, и он должен быть не нулевым (вы так сказали).Код, однако, завершится неудачно при приведении, если было задействовано null
-значение, то есть приведение к типу, не допускающему обнуление, не могло быть успешным.