代碼:
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ObjectUtil {
/**
* 利用Java反射根據類的名稱獲取屬性信息和父類的屬性信息
* @param className
* @return
* @throws ClassNotFoundException
*/
public static List<Field> getFiledsInfo(String className) throws ClassNotFoundException {
List<Field> list = new ArrayList<>();
Class<?> clazz = Class.forName(className);
Field[] fields = clazz.getDeclaredFields();
list.addAll(Arrays.asList(fields));
Class<?> superClazz = clazz.getSuperclass();
if (superClazz != null) {
Field[] superFields = superClazz.getDeclaredFields();
list.addAll(Arrays.asList(superFields));
}
return list;
}
public static void main(String[] args) {
try {
List<Field> fields = getFiledsInfo(Student.class.getName());
for (Field field : fields) {
// 設置訪問對象權限,保證對私有屬性的訪問
field.setAccessible(true);
System.out.println(field.getName());
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
運行結果:

