• 通过反射实现get和set方法


    /*
            setter方法
            o:要操作类的对象
            args:属性名
            attributeValue:属性值
         */
        public static void setXxx(Object o,String args,Object attributeValue){
            Class cls = o.getClass();
            //判断该属性是否存在
            Field field = null;
            try {
                field = cls.getDeclaredField(args);
                if(field == null){
                    field = cls.getField(args);
                }
                if(field == null){
                    return;
                }
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            }
    
            String fieldName = "set"+args.substring(0,1).toUpperCase()+(args.length()>1?args.substring(1):"");
            Method method = null;
            try {
                method = cls.getMethod(fieldName,attributeValue.getClass());
                method.invoke(o,attributeValue);
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }
     /*
            getter方法
            o:要操作类的对象
            args:属性名
         */
        public static <T> T getXxx(T o,String args) throws NoSuchFieldException {
            Class cls = o.getClass();
            //判断该属性是否存在
            Field field = field = cls.getDeclaredField(args);
            if(field == null){
                field = cls.getField(args);
            }
            if(field == null){
                return null;
            }
    
    
            String fieldName = "get"+args.substring(0,1).toUpperCase()+(args.length()>1?args.substring(1):"");
            Method method = null;
            try {
                method = cls.getMethod(fieldName);
                return (T)method.invoke(o);
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
            return null;
        }
  • 相关阅读:
    对NETIF_F_GSO的一些理解
    关于ptype_all和pypte_base中的pt_prev的说明[转]
    linux网络收包过程
    linux的pci驱动模型
    linux内核的冷热页分配器
    linux的bootmem内存管理
    GitHub 下载代码命令并且导入到IDEA环境
    配置Log4j(非常具体)
    sudo:有效用户 ID 不是 0,sudo 属于 root 并设置了 setuid 位吗?
    RMP和YUM软件安装
  • 原文地址:https://www.cnblogs.com/du001011/p/10778334.html
Copyright © 2020-2023  润新知