zoukankan      html  css  js  c++  java
  • 反射获取本类和父类所有属性

    反射获取本类和父类所有属性

    1. getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。

    2. getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。

    3. 同样类似的还有getConstructors()和getDeclaredConstructors()、getMethods()和getDeclaredMethods(),这两者分别表示获取某个类的方法、构造函数。

    那么问题来了,我要获取到当前类以及父类的所有属性,怎么办?

        /**
         * 获取本类及其父类的属性的方法
         * @param clazz 当前类对象
         * @return 字段数组
         */
        private static Field[] getAllFields(Class<?> clazz) {
            List<Field> fieldList = new ArrayList<>();
            while (clazz != null){
                fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
                clazz = clazz.getSuperclass();
            }
            Field[] fields = new Field[fieldList.size()];
            return fieldList.toArray(fields);
        }
    

    测试:

    	public static void main(String[] args) {
            Student student = new Student();
            student.setStuClass("18001");
            student.setStuNum("19800101");
            student.setName("Tom");
            student.setAge("20");
    
            Class<? extends Student> clazz = student.getClass();
            Field[] fields = getAllFields(clazz);
            for (Field field : fields) {
                System.out.println(field.getName());
            }
        }
    

    【参考】:https://www.cnblogs.com/JackZed/p/6888668.html

  • 相关阅读:
    Java日志体系(1) —— 那些年那些事,那些日志的历史
    直播工作原理
    【PAT乙级 】1003. 我要通过!
    [牛客网刷题]被3整除
    [牛客网刷题]牛牛找工作
    Mybatis的简单分析
    数位DP
    正则表达式
    能量球
    从此,我们相伴,不离不弃
  • 原文地址:https://www.cnblogs.com/baijinqiang/p/12010493.html
Copyright © 2011-2022 走看看