Scala компилятор имеет -Xcheck-null
, который пытается проверить, есть ли потенциальная развязка нулевого указателя во время выполнения.Метод Mark вызывает, что он всегда возвращает не нулевой результат.
Это нормально для меня, но я получаю слишком много ложных срабатываний, то есть предположим, я определяю регистратор:
private final val LOGGER: Logger = LoggerFactory.getLogger(classOf[GenericRestImpl])
Метод getLogger
никогда не возвращается null
. Как передать эти знания компилятору, чтобы он не стал жаловаться?
[WARNING] TestImpl.scala:31: warning: potential null pointer dereference: LOGGER.debug
[WARNING] LOGGER.debug("Using {} for sort", sortParam)
Когда я создаю новый экземпляр можно пометить его NotNull
черты:
return new Foo() with NotNull.
Это нормально, но что делать с объектами возвращаются из других методов? Особенно, если он идет от сторонней библиотеки? Мне не нравится идея отмечать все мои переменные как Необязательные, потому что это добавит слишком много накладных расходов. Кроме того, мне не нравится идея создания неявных преобразований (потому что для каждого класса потребуется дополнительный класс, который я хочу отметить как NotNull.
Я также проверил вопрос Library support for Scala's NotNull trait, но это не помогло решить мою проблему.
Вы правильно понимаете, NotNull trait - это всего лишь маркер. Он ничего не делает. – Jatin