簡體   English   中英

Scala - 什么是案例類私有

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM