String判空

String判空


前言

常在业务代码中出现大量需要判空的业务情况,此处做个笔记记录


一、从DTO判断是否为空

优点:从入参开始判断,节省资源

1.注解@NotBlank

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(NotBlank.List.class)
public @interface NotBlank {
   String message() default "{javax.validation.constraints.NotBlank.message}";

   Class<?>[] groups() default {};

   Class<? extends Payload>[] payload() default {};

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
 @Documented
 public @interface List {
    NotBlank[] value();
  }

1、从源码来看该注解可以用在METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER,TYPE_USE上面
2、可以单独用,默认会给message模版,具体要返回message就是

@NotBlank(message=“要返回的message”)

3、支持group分组,组内判断是否为空,默认既是未分组

@NotBlank(groups = {Save.class}

官方默认给四个组,增删改查组
官方默认给四个组,增删改查组

二、从业务代码里判空

优点:判空的拓展性增强

1.基础判空,判断字符串是否为null,或长度是否小于等于0

if(string == null || string.length() <= 0)

2.传统校验,常用方法

if(string == null || string.equals(""))

3.方法校验

if(StringUtils.isBlank(string))

源码:

public static boolean isBlank(CharSequence cs) {
  int strLen;
  if (cs != null && (strLen = cs.length()) != 0) {
    for(int i = 0; i < strLen; ++i) {
      if (!Character.isWhitespace(cs.charAt(i))) {
        return false;
      }
    }

    return true;
  } else {
    return true;
  }
}

如果string为null或者长度为0,或者string内部为制表符、换行符、换页符和回车,
完成三项校验
StringUtils内部还有isEmpty方法
源码:

public static boolean isEmpty(CharSequence cs) {
  return cs == null || cs.length() == 0;
}

源码来看本质其实就是第一种基础判空,要调用的话其实第一种方法更快,调用isEmpty还有兼容风险

总结

此为记录项,欢迎评论下方指正
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值