Java 反射获取类的属性和父类的属性

您所在的位置:网站首页 java反射获取对象属性和值 Java 反射获取类的属性和父类的属性

Java 反射获取类的属性和父类的属性

2024-06-13 17:42| 来源: 网络整理| 查看: 265

定义两个类Person是父类,Student是子类

public class Person { private String username; private String grade; } public class Student extends Person { private String sex; }

通过反射分别获取父类和子类的属性

public class ReflectTest { public static void main(String[] args) throws Exception { Field[] declaredFields = Person.class.getDeclaredFields(); for (Field f : declaredFields) { System.out.println("父类的属性:" + f.getName()); } System.out.println("--------------"); Field[] declaredFields1 = Student.class.getDeclaredFields(); for (Field f : declaredFields1) { System.out.println("子类的属性:" + f.getName()); } System.out.println("---------"); }

如果想要通过属性名去获取类的属性

Field f=Student.class.getDeclaredField("sex");

如果想要通过子类获取父类的所有属性

/** * * 反射通过子类遍历父类的属性 * */ Class clazz = Student.class; List fieldsList = new ArrayList(); while (clazz != null) { // 遍历所有父类字节码对象 Field[] declaredFields2 = clazz.getDeclaredFields(); fieldsList.addAll(Arrays.asList(declaredFields2)); //将`Filed[]`数组转换为`List`然后再将其拼接至`ArrayList`上 clazz = clazz.getSuperclass(); // 获得父类的字节码对象 } for (Object field : fieldsList) { // 打印当前类以及其父类的多有属性对象 System.out.println(field); }

如果子类没有的属性从父类获取

public class ReflectTest2 { public static void main(String[] args) { Student student = new Student(); Field username = null; username = getDeclareField(student, "username"); System.out.println(username); } public static Field getDeclareField(Object o, String fieldName) { Field field = null; Class clazz = o.getClass(); System.out.println(clazz != Object.class); for (;field==null; clazz = clazz.getSuperclass()) { try { field = clazz.getDeclaredField(fieldName); } catch (NoSuchFieldException e) { //e.printStackTrace(); } } return field; } }

参考:https://blog.csdn.net/weixin_38167855/article/details/99648823



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3