代碼:
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(); } } }
運行結果: