zoukankan      html  css  js  c++  java
  • java通过反射获取Java对象属性值

    说明:

      作为反射工具类,通过对象和属性的名字获取对象属性的值,如果在当前对象属性没有找到,依次向上收集所有父类的属

    性,直到找到属性值,没有找到返回null;

    代码:

      1.classUtil

      

    package com.example.demo.utill;
    
    import java.lang.reflect.Field;
    
    /**
     * description: TODO
     * date: 2020/3/24 0024 下午 21:32
     *
     * @author : Administrator
     * @since : 1.0
     **/
    public class ClassUtil {
    
        public static Object getPropertyValue(Object obj, String propertyName) throws IllegalAccessException {
            Class<?> Clazz = obj.getClass();
            Field field;
            if ((field = getField(Clazz, propertyName)) == null)
                return null;
            field.setAccessible(true);
            return field.get(obj);
        }
    
        public static Field getField(Class<?> clazz, String propertyName) {
            if (clazz == null)
                return null;
            try {
                return clazz.getDeclaredField(propertyName);
            } catch (NoSuchFieldException e) {
                return getField(clazz.getSuperclass(), propertyName);
            }
        }
    }

      2.测试类和接口

    package com.example.demo.utill;
    
    /**
     * description: TODO
     * date: 2020/3/24 0024 下午 21:50
     *
     * @author : Administrator
     * @since : 1.0
     **/
    public class Person {
        private String age;
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    }
    package com.example.demo.utill;
    
    /**
     * description: TODO
     * date: 2020/3/24 0024 下午 21:42
     *
     * @author : Administrator
     * @since : 1.0
     **/
    public class User  extends Person{
        private String name ;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    3.测试

    package com.example.demo.utill;
    
    /**
     * description: TODO
     * date: 2020/3/24 0024 下午 21:41
     *
     * @author : Administrator
     * @since : 1.0
     **/
    public class Test {
        public static void main(String[] args) throws IllegalAccessException {
            User u = new User();
            u.setName("张三");
            u.setAge("20");
            Object o = ClassUtil.getPropertyValue(u,"ag1e");
            System.out.println(o);
        }
    }
    // outPut:null
  • 相关阅读:
    ROS编程中使用rosed编写代码
    ROS中.launch文件的remap标签详解
    Ubuntu下网易云音乐无法联网的解决办法
    双舵轮AGV里程计、运动控制核心算法
    PID参数调整的口诀
    altium designer生成gerber步骤
    SLAM FOR DUMMIES 第5-8章 中文翻译
    SLAM for Dummies SLAM初学者教程 中文翻译 1到4章
    有关ros::spin()和ros::spinonce()若干感受
    ROS,launch学习
  • 原文地址:https://www.cnblogs.com/jonrain0625/p/12562480.html
Copyright © 2011-2022 走看看