我正在分析我现有的项目,我发现了一些这样的(概念上):
case class AA private(id: String) {}
case class BB(id: String) {}
在我创建这两个类之后观察差异。我使用java反编译器分析了他们的java源代码。我没有发现任何不同。
私人需要什么?
这有什么重要性。
答案 0 :(得分:5)
case类是一个类,它使用一些辅助函数自动定义Companion对象。其中一个是apply方法,它基本上允许在定义类时跳过'new'关键字。您的示例中的private关键字使用'new'关键字private来构建新的AA。例如:
observerLocator
答案 1 :(得分:3)
使用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()
请注意,使用A
关键字无法实现new
的实例化。 private
使用new
帮助限制A的实例化(将其设为私有)