2
This本質上是我的問題,但接受的答案在返回它們的符號而不是案件對象本身時停止。獲取從Scala中的密封父項派生的案例對象實例
從理論上講,這應該是很容易:
def getCaseObjects(enumType: Type) = {
val m = ru.runtimeMirror(getClass.getClassLoader)
enumType.typeSymbol.asClass.knownDirectSubclasses map { subclass =>
val enumObjMirror = m.reflectClass(subclass.asClass.toType.typeSymbol.asClass)
enumObjMirror.reflectConstructor(subclass.asClass.toType.decl(ru.termNames.CONSTRUCTOR).asMethod)()
}
}
而這個作品!
......除了它們與Parent
密封特徵中包含的實例相比,它們是全新的實例; hooray,我打破了「案件對象是單身」的假設!
我可以在我的Parent
密封特質覆蓋equals
和hashCode
並用它做,但我更喜歡的方式來獲得那些特定對象的情況下,而不是那些碰巧看起來像他們一樣。這可能嗎?如果這有什麼不同,我在2.11。
點上!非常感謝你。 – helgridly