@AllArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数
@NoArgsConstructor
使用后创建一个无参构造函数
@Data
使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去
@Builder
关于Builder较为复杂一些,Builder的作用之一是为了解决在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦,在设计模式中的思想是:用一个内部类去实例化一个对象,避免一个类出现过多构造函数,
@Builder使用案例
@Data // 省略getter,setter
@NoArgsConstructor // 添加无参构造
@Builder(toBuilder = true) // 可以使用Builder进行构造
@AllArgsConstructor(access = AccessLevel.PRIVATE) // 生成包含所有属性的私有构造函数
public class ResultBean<T> implements Serializable {
private static final long serialVersionUID = 8676131899637805509L;
@ApiModelProperty(value = "状态码", example = "200", required = true)
private String code;
@ApiModelProperty(value = "结果信息", example = "ok", required = true)
private String msg;
@ApiModelProperty(value = "结果集的数据封装")
// 默认的data
@Builder.Default
private T data = (T) "";
}
@EqualsAndHashCode
@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集,但是默认@Data不会使用父类的方法,所以需要重新添加上@EqualsAndHashCode(callSuper=true)
枚举类的使用
public class EnumDemo {
public static void main(String[] args){
//直接引用
Day day =Day.MONDAY;
}
}
//定义枚举类型
enum Day {
MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum CodeEnum {
SUCCESS("200", "ok"),
SYS_ERROR("500", "error"),
VALUE_NULL("300", "值为空"),
PARAM_NULL("301", "参数为空,处理异常"),
FAIL("400", "失败"),
NOT_FOUND("404","接口不存在"),
INTERNAL_SERVER_ERROR("500","服务器内部错误"),
EXCEL_TEMPLATE_ERROR("500","excel模板上传有误"),
PARAM_ERROR("500", "参数错误"),
PARAM_IS_NULL("200", "参数为空"),
PARAM_IS_INVALID("200", "参数不合法"),
DATA_NOT_FOUND("200", "数据未找到"),
NOTIFY_SFIM_FAILED("400", "通知丰声失败"),
NOTIFY_SFIM_SUCCESS("200", "通知丰声成功"),
DATA_ALREADY_EXIST("200", "数据已存在");
// 当枚举的对象是非普通类型时,可以使用自定义属性约定约定取值
private String code;
private String msg;
}
// 外界使用枚举类
import static com.awsm.budget.result.CodeEnum.*;
import static com.....ClassName.*;意思是导入这个类里的静态方法
当你需要频繁访问一个或两个类的静态成员时使用它
SUCCESS.getCode() // return 200
SUCCESS.getMsg() //return "成功"
网友评论