【发布时间】:2015-07-02 16:19:19
【问题描述】:
我只需要获取案例类的字段名称。我对它的价值观不感兴趣。
我以为getClass.getDeclaredFields.map(_.getName) 会返回一个字段名称列表。
scala> case class User(id: Int, name: String)
defined class User
scala> User.getClass.getDeclaredFields
res14: Array[java.lang.reflect.Field] = Array(public static final User$ User$.MODULE$)
scala> User.getClass.getDeclaredFields.toList
res15: List[java.lang.reflect.Field] = List(public static final User$ User$.MODULE$)
scala> val user = User(1, "dude")
user: User = User(1,dude)
scala> user.getClass.getDeclaredFields.toList
res16: List[java.lang.reflect.Field] = List(private final int User.id, private final java.lang.String User.name)
这个 User$.MODULE$ 是什么?那是什么?
当您有一个案例类的实例时,方法 getDeclaredFields 可以正常工作,但我不想为了只获取字段而创建一个实例。
为什么这不是真的:
User.getClass.getDeclaredFields.map(_.getName) == List("id", "name")?
【问题讨论】:
标签: scala