要使用Java反射獲取屬性名和值,可以按照以下步驟進行操作:
獲取類的Class對象:
Class clazz = object.getClass();
獲取類的所有屬性:
Field[] fields = clazz.getDeclaredFields();
遍歷屬性數組,獲取屬性名和值:
for (Field field : fields) {
// 設置屬性可訪問,否則私有屬性無法獲取
field.setAccessible(true);
String fieldName = field.getName();
Object fieldValue = field.get(object);
System.out.println("屬性名:" + fieldName + ",屬性值:" + fieldValue);
}
完整示例代碼如下所示:
import java.lang.reflect.Field;
public class ReflectionExample {
public static void main(String[] args) {
// 創建對象
Person person = new Person("Tom", 18, "Male");
// 獲取類的Class對象
Class clazz = person.getClass();
// 獲取類的所有屬性
Field[] fields = clazz.getDeclaredFields();
// 遍歷屬性數組,獲取屬性名和值
for (Field field : fields) {
// 設置屬性可訪問,否則私有屬性無法獲取
field.setAccessible(true);
String fieldName = field.getName();
Object fieldValue;
try {
fieldValue = field.get(person);
System.out.println("屬性名:" + fieldName + ",屬性值:" + fieldValue);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
class Person {
private String name;
private int age;
private String gender;
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
}
運行該示例代碼,就可以獲取到Person對象的所有屬性名和值。