我需要在我的伴生对象中定义一个 val,该对象使用一个将伴生类作为参数的方法进行初始化。
我想用不重复自己的特征来处理这个问题。我的问题是,X.getClass 与 classOf[X] 不同。第一个是伴生对象的类,第二个是伴生类的类,但是我需要得到伴生类而不直接硬编码。
基本上我需要这样的东西:
trait Foo {
}
object FooCompanionObject[f <: Foo] {
val fClazz = classOf[f]
}
// Bar's fClass should be classOf[Bar]
case class Bar extends Foo;
object Bar extends FooCompanionObject[Bar];
问题是由于类型擦除,我无法获得泛型类型的类