public Field[] getFields() throws SecurityException
Trả về một mảng chứa các đối tượng Trường phản ánh tất cả các trường công khai có thể truy cập của lớp hoặc giao diện được đại diện bởi đối tượng Class này. Các phần tử trong mảng trả về không được sắp xếp và không theo bất kỳ thứ tự cụ thể nào. Phương thức này trả về một mảng có độ dài 0 nếu lớp hoặc giao diện không có các trường công khai có thể truy cập hoặc nếu nó đại diện cho một lớp mảng, một kiểu nguyên thủy hoặc void.
Cụ thể, nếu đối tượng Class này đại diện cho một lớp, phương thức này trả về các trường công khai của lớp này và của tất cả các siêu lớp của nó. Nếu đối tượng Class này đại diện cho một giao diện, phương thức này trả về các trường của giao diện này và của tất cả các siêu giao diện của nó.
Trường độ dài ẩn cho lớp mảng không được phản ánh bởi phương thức này. Mã người dùng nên sử dụng các phương thức của lớp Array để thao tác với các mảng.
public Field[] getDeclaredFields() throws SecurityException
Trả về một mảng các đối tượng Trường phản ánh tất cả các trường được khai báo bởi lớp hoặc giao diện được đại diện bởi đối tượng Class này. Điều này bao gồm quyền truy cập công khai, được bảo vệ, mặc định (gói) và các trường riêng , nhưng loại trừ các trường được kế thừa . Các phần tử trong mảng trả về không được sắp xếp và không theo bất kỳ thứ tự cụ thể nào. Phương thức này trả về một mảng có độ dài 0 nếu lớp hoặc giao diện tuyên bố không có trường hoặc nếu đối tượng Class này đại diện cho một kiểu nguyên thủy, một lớp mảng hoặc void.
Và nếu tôi cần tất cả các trường từ tất cả các lớp cha thì sao? Một số mã là cần thiết, ví dụ: từ https://stackoverflow.com/a353103361/755804 :
public static List<Field> getAllModelFields(Class aClass) {
List<Field> fields = new ArrayList<>();
do {
Collections.addAll(fields, aClass.getDeclaredFields());
aClass = aClass.getSuperclass();
} while (aClass != null);
return fields;
}
getField
có thể có được một trường được kế thừa từ một siêu lớp nhưnggetDeclaredField
không thể.getDeclaredField
hạn chế chính nó vào lớp bạn gọi hàm trên.