Ho bisogno di ottenere solo i nomi dei campi di case class, non sono interessato ai suoi valori. Ho pensato che non fosse il problema e getClass.getDeclaredFields.map (_. GetName) mi restituirebbe un elenco di nomi di campi. E non riesco a trovare una domanda simile.Scala. Ottieni l'elenco dei nomi dei campi dalla classe
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)
Che cos'è questo $ utente $ .MODULE? Cos'è quello?
Metodo getDeclaredFields funziona bene quando si ha un'istanza della classe caso, ma io non voglio creare un'istanza al fine di ottenere solo i campi
Perché questo non è vero? User.getClass.getDeclaredFields (_. GetName) == Lista ("id", "nome")
Essi sembrano provenire di nuovo in ordine lexo. C'è un modo per farli tornare nell'ordine in cui sono dichiarati nel codice? – samthebest
Questa risposta ha una discussione che spiega come ottenere in ordine: http://stackoverflow.com/a/16079804/1586965 – samthebest