假设我们有
class User(val name: String, val role: UserRole.Value)
class UserRole extends Enumeration {
val Admin, User = Value
}
val u = new User("root", UserRole.Admin)
如何获得Class [_]" class UserRole"什么时候
u.role.getClass
返回" scala.Enumeration.Value"
答案 0 :(得分:2)
new User("root", UserRole.Admin)
和role: UserRole.Value
都没有意义,因为UserRole
不是值。通常,Enumeration
会延长object
s,而非class
es。
像
这样的东西val field = classOf[Enumeration#Value].getDeclaredField("outerEnum")
field.setAccessible(true)
val enum = field.get(u.role)
enum.getClass // if you want specifically the class
应该有效(至少对于当前版本; outerEnum
不是API的一部分!)