我有这样的类型
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
的普通构造函数。这可能在Scala中吗?
答案 0 :(得分:5)
是的,因为伴侣对象可以访问其伴侣类的私有成员,所以你可以将主(和辅助的,如果有的话)构造函数设为私有。 这里有伪代码:
class ConcreteFoo private (n: Int) extends Foo(n)