/**
* 获取类的变量名 (包括所有父类)
*
* @param clazz 类加载器
* @return 获取类的变量名 (包括所有父类)
*/
public static String[] getVariableName(Class<?> clazz) {
List<String> varNameList = new ArrayList<>();
// 遍历所有父类字节码对象
while (clazz != null) {
Field[] declaredFields = clazz.getDeclaredFields();
String[] varName = new String[declaredFields.length];
for (int i = 0; i < varName.length; i++) {
varName[i] = declaredFields[i].getName();
}
// 将`String[]`数组转换为`List<>`然后再将其拼接至`ArrayList`上
varNameList.addAll(Arrays.asList(varName));
// 获得父类的字节码对象
clazz = clazz.getSuperclass();
}
String[] array = new String[varNameList.size()];
return array.length == 0 ? null : varNameList.toArray(array);
}
方法的实参为 ClassName.class