zoukankan      html  css  js  c++  java
  • java bean 慎用 is开头isXxx开头的属性,若必须得用,那么一定要记得 idea自动生成的 setter 和 getter会不标准,从而会引起问题,他自动生成后,需要手工再次进行修改,才可使用,要不然有可能引起各种问题

    直接上例子:

    然后用 Idea 自动生成 getter 和 setter 

    public class XyzBean {
    
        //最普通的
        private String name;
    
        //Boolean类型,带is前缀(3处都要手工修改成标准的,若不手工修改,自己看后果)
        private Boolean isHis;
    
        //Boolean类型,没有is前缀(完全没有问题)
        private Boolean noIs;
    
        //String类型,带is前缀(完全没有问题)
        private String isMan;
    
        //Long类型,带is前缀,Integer一样,不举例了(完全没有问题)
        private Long isLong;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    
        //方法名这里少了is,应该是getIsHis
        public Boolean getHis() {
            return isHis;
        }
    
        //方法名这里少了is, 应该是 setIsSuccess
        public void setHis(Boolean his) {//参数名,应该是 isHis
            //这里又少了this关键字,应该是 this.isHis = isHis;
            isHis = his;
        }
    
        public Boolean getNoIs() {
            return noIs;
        }
    
        public void setNoIs(Boolean noIs) {
            this.noIs = noIs;
        }
    
        public String getIsMan() {
            return isMan;
        }
    
        public void setIsMan(String isMan) {
            this.isMan = isMan;
        }
    
        public Long getIsLong() {
            return isLong;
        }
    
        public void setIsLong(Long isLong) {
            this.isLong = isLong;
        }
    }

    假如用这个 XyzBean 做返回,我们把它 序列化成 json看下 会是什么样子的:

    public class TestMain {
        public static void main(String[] args) throws JsonProcessingException {
            ObjectMapper objectMapper = new ObjectMapper();
            XyzBean xyzBean = new XyzBean();
            xyzBean.setName("我操");
            xyzBean.setHis(true);
            xyzBean.setNoIs(false);
            xyzBean.setIsMan("yes");
            xyzBean.setIsLong(1L);
            System.out.println(objectMapper.writeValueAsString(xyzBean));
        }
    }
    {"name":"我操","noIs":false,"isMan":"yes","isLong":1,"his":true}//根本就不存在 his 属性,我们都没有定义,怎么出来一个 这个

    问题就出来了,属性名发生了变化,坑啊 草草草

    解决方法,凡是 boolean 类型的 is开头的 不用 idea 自动生成,或生成后 自己手工修改3个地方。

    我们修改下,再测试:

  • 相关阅读:
    javascript实现俄罗斯方块游戏
    HTML5 SSE 数据推送应用开发
    一次实习生面试经历
    前端工作面试问题(上)
    关于写好这个“简历”的几点思考
    ROS机器人的系统构建-连接摄像头、连接kinect、连接激光雷达
    opencv 轮廓的外围多边形提取或者 删除最小最大轮廓
    opencv 轮廓点的坐标大小的修改
    opencv 轮廓的外围多边形提取或者删除最小最大轮廓
    opencv 容器的使用vector<std::vector<cv::Point>> or 轮廓存储到容器中
  • 原文地址:https://www.cnblogs.com/del88/p/13537360.html
Copyright © 2011-2022 走看看