Примечание: От Scala 2.11, NotNull
устарел.Поддержка библиотек NotNull от Scala
Насколько я понимаю, если вы хотите, чтобы ссылочный тип не был нулевым, вам необходимо смешать магический атрибут NotNull
, и компилятор автоматически помешает вам вставлять в него значения null
. См. Это mailing-list thread, например.
Что недоставало, достойная поддержка библиотеки для типов, не допускающих нулевое значение. Если я хотел бы написать пакет, который не должен напрямую связываться с java-кодом, и я хочу, чтобы по умолчанию все типы в этом пакете не использовали null
, у меня нет выбора, кроме как переопределить все переменные builting, например
//can't actually do that, but just to give the general idea
class NString extends String with NotNull
class NMap[X,Y] extends Map[X,Y] with NotNull
...
Я ожидаю, что Scala иметь (как плагин компилятора или библиотеку) вариант для меня, чтобы написать
import collections.notnull._
для того, чтобы легко DISALLOW null
использования в конкретном файле Scala.
Есть ли возможность легко заставить многие полезные типы в стандартной библиотеке быть недействительными?
Вы можете расширить строку? Я думал, что это было окончательно. –
На самом деле вы не можете. Хорошая точка зрения. Нужно определить NString с неявным преобразованием в строку, я думаю. –
Я предполагаю, что вы ищете что-то вроде 'org.jetbrains.nnotes.NotNull' - и я тоже это пропустил. – Martin