scala 反射获取枚举值 class
scala reflection get class of enumaration value
假设我们有
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
return "scala.Enumeration.Value"
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 的一部分!)
假设我们有
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
return "scala.Enumeration.Value"
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 的一部分!)