Uwaga: Od wersji Scala 2.11, NotNull
jest przestarzała.Obsługa biblioteki dla funkcji Scala NotNull
O ile rozumiem, jeśli chcesz, aby typ referencyjny był nie-nullable, musisz zmieszać cechę magiczną NotNull
, a kompilator automatycznie uniemożliwi umieszczenie w nim wartości. Zobacz na przykład: mailing-list thread.
To, czego brakuje, to przyzwoita obsługa bibliotek dla typów nieululujących. Jeśli chciałbym napisać pakiet, który nie musi bezpośrednio łączyć kodu java, i chcę zapobiec domyślnemu używaniu wszystkich typów w tym pakiecie, to nie mam innego wyjścia, jak przedefiniować wszystkie zmienne związane z budową, takie jak:
//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
...
Spodziewam scala mieć (jako plugin kompilatora lub biblioteki) opcji dla mnie do napisania
import collections.notnull._
aby łatwo Disallow null
wykorzystanie w określonym pliku Scala.
Czy istnieje opcja, aby łatwo wymusić użycie wielu przydatnych typów w bibliotece standardowej, aby nie były możliwe do zniesienia?
Możesz przedłużyć String? Myślałem, że to jest oznaczone jako ostateczne. –
Właściwie nie możesz. Słuszna uwaga. Konieczne jest zdefiniowanie NString z niejawną konwersją do łańcucha, jak sądzę. –
Domyślam się, że szukasz czegoś takiego jak "org.jetbrains.annotations.NotNull" - i też tęsknię za tym. – Martin