[英]Scala - what is case class private
我正在分析我現有的項目,我發現了一些這樣的(概念上):
case class AA private(id: String) {}
case class BB(id: String) {}
在我創建了這兩個類來觀察差異之后。 我使用java反編譯器分析了他們的java源代碼。 我沒有發現任何不同。
在那里私人的需要是什么。
這有什么重要性。
案例類是一個類,它使用一些輔助函數自動定義Companion對象。 其中一個是apply方法,它基本上允許在定義類時跳過'new'關鍵字。 您的示例中的private關鍵字使用'new'關鍵字private來構建新的AA。 例如:
case class A private(id: Int)
case class B(id: Int)
A(1) //Using public method
B(1) //Using public method
new A(1) // Using PRIVATE method
new B(1) // Using public method
您可以使用Scala REPL更好地理解這一點
scala> case class A private(a: String)
defined class A
scala> new A("")
<console>:14: error: constructor A in class A cannot be accessed in object $iw
new A("")
^
scala> A("")
res3: A = A()
請注意,使用new
關鍵字無法實現A
實例化。 private
幫助限制使用new
實例化A(使其成為私有)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.