Tôi chỉ cần lấy tên trường của lớp chữ, tôi không quan tâm đến giá trị của nó. Tôi nghĩ rằng đó không phải là vấn đề và getClass.getDeclaredFields.map (_. GetName) sẽ trả lại cho tôi một danh sách tên trường. Và tôi không thể tìm thấy câu hỏi tương tự.Scala. Lấy danh sách tên trường từ trường hợp lớp
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)
Người dùng này $ .MODULE $ là gì? Cái gì thế?
Phương pháp getDeclaredFields hoạt động tốt khi bạn có thể hiện của trường hợp lớp, nhưng tôi không muốn tạo ra một thể hiện để có được chỉ lĩnh vực
Tại sao điều này là không đúng? User.getClass.getDeclaredFields (_. GetName) Danh sách == ("id", "tên")
Chúng xuất hiện đến trở lại theo thứ tự lexo. Có cách nào để khiến họ trở lại theo thứ tự mà họ được khai báo trong mã không? – samthebest
Câu trả lời này có một chuỗi giải thích cách nhận theo thứ tự: http://stackoverflow.com/a/16079804/1586965 – samthebest