如果我有以下的 case class,它拥有私有构造函数并且我无法访问伴生对象中的 apply 方法。
case class Meter private (m: Int)
val m = Meter(10) // constructor Meter in class Meter cannot be accessed...
有没有办法使用具有私有构造函数的case类,但保持伴随对象生成的apply方法为公共的?
我知道在我的示例中这两个选项之间没有区别:
val m1 = new Meter(10)
val m2 = Meter(10)
但是我想禁止第一个选项。
-- 编辑 --
令人惊讶的是以下内容可以工作(但不是我想要的):
val x = Meter
val m3 = x(10) // m3 : Meter = Meter(10)
val m2 = Meter(10)
没有产生任何错误。 - Luigi Plingecase class Meter private (m: Int)
这一行引起了错误,当它作为顶级对象声明时(http://scalafiddle.net/console/eb6fdc36b281b7d5eabf33396c2683a2),但是当它在另一个对象或REPL中声明时,它可以正常工作(http://scalafiddle.net/console/cdc0d6e63aa8e41c89689f54970bb35f)。 - Luigi Plinge