• 统一结果集,私有构造方法和静态方法的联合用法,return返回值为什么是this的解释


    先看代码,再解释

    @Data
    @ApiModel(value = "全局统一返回结果")
    public class Result {
    
        @ApiModelProperty(value = "是否成功")
        private boolean success;
    
        @ApiModelProperty(value = "返回码")
        private Integer code;
    
        @ApiModelProperty(value = "返回消息")
        private String message;
    
        @ApiModelProperty(value = "返回数据")
        private Map<String, Object> data = new HashMap<String, Object>();
    
        private Result(){}
    
        public static Result ok(){
            Result r = new Result();
            r.setSuccess(true);
            r.setCode(ResultCode.OK);
            r.setMessage("成功");
            return r;
        }
    
        public static Result error(){
            Result r = new Result();
            r.setSuccess(false);
            r.setCode(ResultCode.ERROR);
            r.setMessage("失败");
            return r;
        }
    
        public Result message(String message){
            this.setMessage(message);
            return this;
        }
    
        public Result code(Integer code){
            this.setCode(code);
            return this;
        }
    
        public Result data(String key, Object value){
            this.data.put(key, value);
            return this;
        }
    
        public Result data(Map<String, Object> map){
            this.setData(map);
            return this;
        }
    }

    这是今天学习到的代码,里面有许多有趣的地方,现在解释并且说明原因

    1.为什么构造器是私有的,为什么方法是静态的

      构造器私有则代表了其他类中不能通过new Result()的方式创建Result对象,意思就是只有Result这个类中才能创建Result这个对象,既然无法创建这个对象,则对象里面的方法只有是静态方法才能被其他类调用,但是这个类被写出来肯定是要用的,所以在静态方法中创建了这个类的对象并且最终返回了这个对象,而且在静态方法中还可以设置创建出来的对象的属性,配合十分精妙

    2.为什么有些方法返回的是this

      this代表的是调用者,比如我获得了一个Result对象叫做r,那么我调用r.message()方法,返回调用者,也就是r.message()方法返回的仍然是r,这个有什么好处呢,好处就在于能够写出类似级联的写法,比如r.message().code().data(),这种写法同时调用了r这个对象中的三个方法,简化了代码并且阅读性高

  • 相关阅读:
    ios 如何获得系统时间和日期
    IOS开发使用委托delegate在不同窗口之间传递数据
    集合视图UICollectionView 介绍及其示例程序
    iOS6新特征:UICollectionView介绍
    ios delegate和protocol
    iOS页面跳转及数据传递
    [转载]iOS6新特征:UICollectionView官方使用示例代码研究
    跟上潮流:十大移动应用开发平台
    UITextField 如何设置为密码方式显示?
    【转】 Android中Intent组件详解
  • 原文地址:https://www.cnblogs.com/skyvalley/p/13922792.html
Copyright © 2020-2023  润新知