精华内容
下载资源
问答
  • java 通过反射遍历所有字段修改值,避免重复set、get 比如一张表里的字段十几个,而这个表里的图片存储字段有八九个,在返回这个实体类的时候,要对图片进行加密或者其他操作,那就要在实体类查询结果出来后,一个个...

    java 通过反射遍历所有字段修改值,避免重复set、get

    比如一张表里的字段十几个,而这个表里的图片存储字段有八九个,在返回这个实体类的时候,要对图片进行加密或者其他操作,那就要在实体类查询结果出来后,一个个的get修复,再set赋值,代码量很多,另外如果有多个接口用到,就会产生重复代码;
    通过java 的反射,遍历所有字段,进行一个判断,取出来的值是带有图片链接的,进行操作,省去了很多代码,下面贴代码
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    public class ClassUtil {
       
        private  final Logger logger = LoggerFactory.getLogger(getClass());
    
        /**
         * 通过反射所有字段,带有图片的字段,重新赋值
         *
         * @param obj 对象
         */
        public void setImageValue(Object obj) {
            try {
                Class aClass = obj.getClass();
                Field[] fields = aClass.getDeclaredFields();
                for (Field field : fields) {
                    PropertyDescriptor pd = new PropertyDescriptor(field.getName(),
                            aClass);
                    // 获取get方法
                    Method getMethod = pd.getReadMethod();
                    // 获取set方法
                    Method setMethod = pd.getWriteMethod();
                    // 通过get方法获取到值
                    Object o = getMethod.invoke(obj);
                    if (o != null) {
                        String s = o.toString();
                        if (s.contains("jpg")) {
                            // 业务操作
                            // 更新为新的值
                            setMethod.invoke(obj, builder.toString());
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     }
    
    展开全文
  • 业务场景:一个房产交易系统中的业务需求,查询房屋交易状态接口,调用第三方接口返回一个vo对象,该对象的属性主要是描述该房屋的交易情况,比如是否抵押,是否被查封等,现在需要利用该对象的值决定返回给调用方的...

    业务场景:一个房产交易系统中的业务需求,查询房屋交易状态接口,调用第三方接口返回一个vo对象,该对象的属性主要是描述该房屋的交易情况,比如是否抵押,是否被查封等,现在需要利用该对象的值决定返回给调用方的返回值。(现在一个对象中有很多个属性,大部分属性的值影响返回结果)
    代码:
    vo对象:

    @Data
    public class BDCQZTXX {
    
        private String fwbm;//房屋编码
        private String bdcdyh;//不动产单元号
        private String xzqhdm;//行政区划代码
        private String sfybdy;//是否ybdy
        private String sfzgedy;//是否zgedy
        private String sfzjgcdy;//是否在建工程抵押
        private String sfcf;//是否查封
        private String sfycf;//是否预查封
        private String sfyg;//是否预购
        private String sfydy;//是否预抵押
        private String sfyy;//是否异议
        private String sfdy;//是否抵押
        private String sfsd;//是否sd
        private String sfdj;//是否登记
        private String sfzdzr;//是否zdzr
        private String sfzbyw;//是否在办业务
        private String bz;//备注
    

    .
    .
    .
    模拟业务处理(测试)

    
    	public static void main(String[] args){
    	//模拟调用接口返回的对象数据
    		String s = "{\n" +
    				"    \"fwbm\": \"1\",\n" +
    				"    \"bdcdyh\": \"1\",\n" +
    				"    \"xzqhdm\": \"1\",\n" +
    				"    \"sfdy\": \"0\",\n" +
    				"    \"sfzjgcdy\": \"0\",\n" +
    				"    \"sfcf\": \"0\",\n" +
    				"    \"sfyg\": \"0\",\n" +
    				"    \"sfydy\": \"0\",\n" +
    				"    \"sfyy\": \"0\",\n" +
    				"    \"sfdyi\": \"0\",\n" +
    				"    \"sfsd\": \"0\",\n" +
    				"    \"sfdj\": \"0\",\n" +
    				"    \"sfzdzr\": \"0\",\n" +
    				"    \"sfzbym\": \"0\",\n" +
    				"    \"bz\": \"\"\n" +
    				"  }";
    		//是否可售(0不可售1可售)
    		int sfks = 1;
    		//json字符串转对象(fastjson)
    		BDCQZTXX bdcqztxx =JSONObject.parseObject(s, BDCQZTXX.class);
    		//遍历对象的字段数组
    		for (Field f : bdcqztxx.getClass().getDeclaredFields()) {
    			f.setAccessible(true);//表示反射对象是否抑制java语言访问
    			String name = f.getName();//获取字段名称
    			Object value = f.get(bdcqztxx);//获取对应字段的值
    			Class<?> type = f.getType();//获取对应字段的类型
    			System.out.println(type);
    			
    			//不需要判断的字段
    			if ("FWBM".equals(name) ||
    					"BDCDYH".equals(name) ||
    					"BZ".equals(name) ||
    					"XZQHDM".equals(name)) {
    				System.out.println("当前不影响判断的字段为 "+name + ":" + value);
    				continue;
    			}
    			
    			System.out.println("当前影响判断的字段为 "+name + ":" + value);
    			//需要判断的字段
    			if ("1".equals(String.valueOf(value))) {
    				//0为不可售
    				sfks = 0;
    				break;
    			}
    		}
    		
    		if (sfks == 1) {
    			System.out.println("可售");
    		}
    		if (sfks == 0) {
    			System.out.println("不可售");
    		}
    
    
    	}
    

    .
    .
    .
    就此完成!!!

    展开全文
  • java中通过反射遍历属性字段及值

    千次阅读 2014-04-01 14:28:40
    package test;...import java.lang.reflect.Field; interface IEntity{ } class Entity implements IEntity{ private String s1 = "字符串1"; private String s2 = "字符串2"; } public class Test {



    package test;
    
    import java.lang.reflect.Field;
    
    interface IEntity{
    
    }
    
    class Entity implements IEntity{
        private String s1 = "字符串1";
    
        private String s2 = "字符串2";
    }
    
    public class Test {
        
        public static void reflect(IEntity e) throws Exception{
            Class cls = e.getClass();
            Field[] fields = cls.getDeclaredFields();
            for(int i=0; i<fields.length; i++){
                Field f = fields[i];
                f.setAccessible(true);
                System.out.println("属性名:" + f.getName() + " 属性值:" + f.get(e));
            } 
        }
        
        public static void main(String[] args) throws Exception{
            IEntity e = new Entity();
            reflect(e);
        }
    }


    如果f.get(e) 是自定义类型 可以先对f.getName()做判断 然后 强转类型

    如下:

     if(f.getName().equals("identifier")){
            			
            			 Identifier ee=(Identifier)f.get(l); 
            			 value=ee.getRaw();
            		 }




    展开全文
  • /** * 报事报修和投诉建议查询接口 * */ @GetMapping("/houseid") public Result houseid(@RequestParam Map searchMap){ String houseid = searchMap.get("houseid").toString(); String strs = null; if(searchMap...
        /**
        * 报事报修和投诉建议查询接口
        * */
        @GetMapping("/houseid")
        public Result houseid(@RequestParam Map searchMap){
            String houseid = searchMap.get("houseid").toString();
            String strs = null;
            if(searchMap.get("typa").equals("1")){
                strs = "typa<6 and (typa_butler=1 or typa_butler=4)";
            }
            if(searchMap.get("typa").equals("2")){
                strs = "typa>=6 and (typa_butler=1 or typa_butler=4)";
            }
            List<Map> list = repairService.listHouseid(houseid,strs);
            for(int i=0;i<list.size();i++){
                HashMap<String,Object> map = (HashMap<String,Object>) list.get(i);
                SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String date;
                if(map.get("typa_butler").equals(1)){
                    Long sj = Long.valueOf(map.get("date").toString());
                    date = dateformat.format(sj);
                }else{
                    String sjs = map.get("date")+"000";
                    Long sj = Long.valueOf(sjs);
                    date = dateformat.format(sj);
                }
                map.put("date",date);
    
                list.set(i,map);
            }
            return new Result(true,StatusCode.OK,"查询成功",list);
        }
    List<Map> list = repairService.listHouseid(houseid,strs);
    for(int i=0;i<list.size();i++){
         HashMap<String,String> map = (HashMap<String, String>) list.get(i);
         map.put("date","333");
         list.set(i,map);
    }

    展开全文
  • Java新手最容易犯的错误,对JAVA集合进行遍历删除时务必要用迭代器。切记。 其实对于如上for循环,运行过程中还是转换成了如下代码: 1 2 3 4 5 6 for ...
  • java递归遍历树形list

    千次阅读 2020-06-09 15:02:37
    遍历树形List,不是生成。当然,因为子节点个数的不确定性,所以,不论是生成树还是遍历树,都得用到递归 网上查了一圈,基本都是生成,不是遍历一棵树形List。...java递归遍历树结构目录 坑啊。 自己写一个了: ...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java ...
  • java实现遍历树形菜单方法

    千次阅读 2017-12-15 14:08:26
    开发工具:MyEclipse 10 后台框架:Hibernate + Struts2  数据库:Oracle 11g ... 在开发中我们经常会遇到左边是树形菜单,右边是一个显示...那么左边的树形菜单怎么从数据库里面获取数据在遍历实现呢?我们不妨
  • 开发工具:MyEclipse 10 后台框架:Hibernate + Struts2 数据库:Oracle 11g 前台框架:EasyUi 浏览器:谷歌 ...那么左边的树形菜单怎么从数据库里面获取数据在遍历实现呢?我们不妨来看看设计思路。 ...
  • * 遍历实体类的属性和数据类型以及属性值 * @param model * @throws NoSuchMethodException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws InvocationTargetException */ ...
  • 遍历处理JsonObject的内容

    千次阅读 2019-08-31 17:53:40
    JsonObject的处理(其中value为实某一实体类的全称) ... Java创建对象实例的三种方法1.new2.clone3.newInstance遍历JsonObject 的内容 ) 目标 遍历jsonObject中value,value为已实例化的实体类;并载入该实体类...
  • Java 8 为 Iterable 接口新增了一个 forEach(Consumer action) 默认方法,该方法所需参数的类型是一个函数式接口,而 Iterable 接口是 Collection 接口的父接口,因此 Collection 集合也可直接调用该方法。...
  • 有时候希望能够像遍历Map一样的遍历JavaBean的属性名称和属性值且能够像操作流Stream一样去操作,特此写了两个工具类,暂时只有遍历和Stream的功能... 目录 第一步:接口(读者可直接拷贝) ...
  • Java中的TreeSet是Set的一个子类,TreeSet集合是用来对象元素进行排序的,同样他也可以保证元素的唯一。 那TreeSet为什么能保证元素唯一,它是怎样排序的呢?先看一段代码: public static void demo() { TreeSet&...
  • [Java基础要义]HashMap、LinkedHashMap元素遍历机制探讨

    万次阅读 多人点赞 2015-01-22 15:08:43
    Map作为键值对Entry的的容器,对其内部 键值对Entry 的遍历总归是要有一个顺序的。  本文重点讨论HashMap及其子类LinkedHashMap的遍历机制,总结出... HashMap提供了两个遍历访问其内部元素Entry的接口:  1. Set
  • 在“ Java SE 8新功能导览”系列的这篇文章中,我们将深入解释并探索代码,以了解如何使用lambda表达式和方法引用 遍历集合 ,并使用谓词接口过滤它们,实现默认方法在接口中,最后在接口中实现静态方法 。...
  • 下面小编就为大家分享一篇java提取json中某个数组的所有值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 史上最全面Java面试汇总(面试题+答案)

    万次阅读 多人点赞 2018-07-06 14:09:25
    JAVA面试精选【Java基础第一部分】 JAVA面试精选【Java基础第二部分】 JAVA面试精选【Java基础第三部分】 JAVA面试精选【Java算法与编程一】 JAVA面试精选【Java算法与编程二】 Java高级工程师—面试(1) ...
  • java 反射给字段重新赋值

    千次阅读 2017-04-10 14:46:11
    1.获取实体的所有字段,遍历 2.获取字段类型 3.调用字段的get方法,判断字段值是否为空 4.如果字段值为空,调用字段的set方法,为字段赋值 Field[] field = model.getClass().getDeclaredFields(); // 获取实体...
  • 遍历map取对应字段的值

    千次阅读 2018-09-11 14:09:29
    后台dao层接口: Map&lt;String,Object&gt; detail(IwResultSpot vo); 中间层: //接收为map Map&lt;String,Object&gt; map = this.detail(vo); List list1 = new ArrayList(); list1.add...
  • java对象序列化去掉字段 假设您正在开发一个将对象自动保存到数据库中的框架。 您需要检测两次保存之间所做的更改,以便仅保存已修改的字段。 如何检测脏场。 最简单的方法是遍历原始数据和当前数据,并分别比较每...
  • MyBatis面试题(2020最新版)

    万次阅读 多人点赞 2019-09-24 16:40:33
    整理好的MyBatis面试题库,史上最全的MyBatis面试题,MyBatis面试宝典,特此分享给大家 MyBatis 介绍 MyBatis 是一款优秀的...MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口Java 的 POJO(Plai...
  • 通用性的枚举类遍历实现前言通用性的枚举类遍历产出背景解决方法 ...我们公司系统中有许多类似状态这样的数据库字段(下图为其中之一) 页面需要展示如下: 解决方法 1.方法一 简单粗暴如下: <select >...
  • 前三图为mybatis接口以及调用实例,图四为报错信息;mybatis3.2.5版本,发现如果存在value为null就会报错,麻烦各位支招
  • ApiDescription是springfox提供的接口描述信息类,在springfox 源码分析(十) 遍历接口获取Model对象中我们拿到了接口的类型Model集合信息,但除了Model信息,接口还有更多的信息 基础信息 主要包括:接口路径、...
  • Java容器HashMap遍历方法和源代码解析

    千次阅读 2017-05-22 16:17:09
    本文主要介绍了HashMap遍历用法和相应的元代码解析
  • 开发工具与关键技术:java、myeclise 10 作者:清晨 撰写时间:6.28 Jsp中的代码 <form action="${ctx}/servlet/UserServlet?fun=test" method="post" enctype="multipart/form-data" > <div class="img-...
  • 左边相当于全选,选中左边的同时,对应的右边字段的那一条数据里的值都要被选中: var checked_val=[]; $(function(){ $("input:checkbox").click(function() { $(this).parent().attr("class","checkeds"); ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,051
精华内容 26,820
关键字:

java遍历接口字段

java 订阅