1.考虑安全访问范围内的属性,没有权限访问到的属性不读取
- private String getFieldValueByFieldName(String fieldName, Object object) {
- try {
- Field field = object.getClass().getField(fieldName);
-
-
- return (String)field.get(object);
- } catch (Exception e) {
-
- return null;
- }
- }
2.不考虑从祖先类继承的属性,只获取当前类属性,包括四类访问权限,private,protect,default,public
- private String getFieldValueByFieldName(String fieldName, Object object) {
- try {
- Field field = object.getClass().getDeclaredField(fieldName);
-
- field.setAccessible(true);
- return (String)field.get(object);
- } catch (Exception e) {
-
- return null;
- }
- }
3.考虑父类继承过来的属性,包括四类访问权限,private,protect,default,public
- private Field getFieldByClasss(String fieldName, Object object) {
- Field field = null;
- Class<?> clazz = object.getClass();
-
- for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
- try {
- field = clazz.getDeclaredField(fieldName);
- } catch (Exception e) {
-
-
-
- }
- }
- return field;
-
- }
java 反射机制--根据属性名获取属性值
原文:https://www.cnblogs.com/zhizhijiao/p/9052136.html