Мне нужно получить только имена полей класса case. Меня не интересуют его ценности. Я думал, что 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)
Что такое этот пользователь $.MODULE $? Что это?
Метод getDeclaredFields отлично работает, когда у вас есть экземпляр класса case, но я не хочу создавать экземпляр, чтобы получить только поля.
Почему это не так: User.getClass.getDeclaredFields.map(_.getName) == List("id", "name")
?