2014-02-09 28 views
3

由於NotNull特徵已被棄用,聲明我的類不可空的新的最佳方式是什麼?確保Scala中的notnull類?

仍然有編譯器選項(不會阻止別人在其他項目中濫用我的庫)。除了少數衝突的Java註釋之外,我懷疑Scala編譯器會尊重它。

+0

ScalaDoc和源代碼(對於2.10.x)均不提示NotNull。 –

+0

@RandallSchulz從2.11開始不推薦使用(尚未發佈)。 – Jesper

回答

2

您不應該在Scala中使用null,如果您不這樣做,則不需要使用NotNull特徵。

如果您有可能具有「無值」的值或變量,請使用Option類型而不是null值。 Option有兩個子類:SomeNone

// text is "None", which means it has no value 
var text: Option[String] = None 

// Use "Some" when it should have a value 
text = Some("Hello World") 

Option有很多有用的方法;它可以(或多或少)將其視爲一個具有零個或一個元素的集合,因此您可以調用常用的集合方法,並且可以將它用於模式匹配。

text match { 
    case Some(s) => println("Text: " + s) 
    case None => println("Empty") 
} 
+1

我在Java中也不使用null。我想阻止其他人使用null。 – user833970

+0

使用'null'不是慣用的Scala,所以一般Scala程序員不會使用'null'。 – Jesper

+5

創建錯誤不是慣用的Scala - 但它們仍然會發生。 –