为简单的Java值类派生/生成任意[T]

时间:2015-09-21 01:49:40

标签: scala shapeless scalacheck

我有一个Java类Arbitrary[MyClass],我想在Scalacheck中创建一个ArbitraryMyClass的{​​{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类。

0 个答案:

没有答案