Oop 限制构造函数访问
我有一种像这样的类型Oop 限制构造函数访问,oop,scala,Oop,Scala,我有一种像这样的类型 sealed class Foo[A](val value: A) object Foo { def apply[A](v: A)(implicit num: Numeric[A]): Foo[A] = /* highly complex stuff to make a Foo[A] */ implicit def toA[A](x: Foo[A]) = x.value } Foo因为类只应该保存值,所以隐式数字没有多大意义。但是我需要A的
sealed class Foo[A](val value: A)
object Foo {
def apply[A](v: A)(implicit num: Numeric[A]): Foo[A] =
/* highly complex stuff to make a Foo[A] */
implicit def toA[A](x: Foo[A]) = x.value
}
Foo
因为类只应该保存值,所以隐式数字没有多大意义。但是我需要A
的类型始终是数字
因此,我的想法是使它不可能在它的同伴之外使用
Foo
s普通构造函数。这在Scala中可能吗?是的,因为伴生对象可以访问伴生类的私有成员,所以只需将主构造函数(如果有辅助构造函数的话)设为私有。
此处的伪代码:
class ConcreteFoo private (n: Int) extends Foo(n)
我从来没见过你能在那里放一个私人房间。谢谢