我有一个Java类Arbitrary[MyClass]
,我想在Scalacheck中创建一个Arbitrary
。 MyClass
的{{1}}实现只会为每个构造函数参数调用arbitrary[T]
,然后使用所有参数执行new MyClass
:
Arbitrary {
for {
a <- arbitrary[A]
b <- arbitrary[B]
c <- arbitrary[C]
} yield new MyClass(a, b, c)
}
构造函数需要很多字段,并且我希望将来必须为其他类执行此操作。我怎样才能避免一个巨人的理解?有没有办法派生Arbitrary[MyClass]
?
看起来Shapeless库可以为Scala案例类派生这些类型类,但据我所知,它不适用于Java类。