. S[X] <: Set[X]. , , . . , S[X] <: Set[List[X]].
: , #, , , , . , , - . Func<S> , factory, new ,
class Generic<T>
{
public Generic(..., Func<T> factory)
}
static class Generic
{
public Generic<T> Create(....) where T : new {
return new Generic(..., () => new T());
}
}
scala . , .
trait Builder[A] {
def build(): A
}
object Builder {
def build[A: Builder] : A = implicitly[Builder[A]].build()
}
class Generic[A: Builder](....) {....
...
// instead of val a = new A()
val a = Builder.build[A]
....
}
, , . , , .