自定义@NotNull注解

自定义@NotNull注解

/*
	配合hasNullOrEmpty使用
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented   //javadoc
public @inteface NotNull{
}

/*
	如果  arg为String类型:空或者null返回true
	否则  当arg为null或者arg存在NotNull注释的字段为null时返回true
*/
public class Conditions{

	public static Boolean hasNullOrEmpty(Object... args) {
		for (Object arg : args) {
			if (arg instanceof String && Strings.isNullOrEmpty(String.valueOf(arg))) {
                return true;
            }
            if (arg == null) {
                return true;
            }else{
             	 Field[] fields = arg.getClass().getDeclaredFields(); //获取所有权限的字段
             	 for (Field field : fields) {
                    NotNull notNull = field.getAnnotation(NotNull.class);//获取字段的是否有@NotNull注解
                    try {
                        if (notNull != null) {
                            if (Modifier.isPrivate(field.getModifiers())) {//如果该字段是私有的
                                field.setAccessible(true);
                            }
                            if (field.get(arg) == null) {   //如果该字段上的值为null
                                if (Modifier.isPrivate(field.getModifiers())) {
                                    field.setAccessible(false);
                                }
                                return true;  
                            }
                            if (Modifier.isPrivate(field.getModifiers())) {
                                field.setAccessible(false);
                            }
                        }
                    } catch (IllegalAccessException e) {
                        Throwables.propagate(e);
                    }
                }
            }
		}
		 return false;
	}
	
	public static List<String> getNullableField(Object object) {
		 List<String> result = new ArrayList<>();
		 Field[] fields = object.getClass().getDeclaredFields();
		 for (Field field : fields) {
            NotNull notNull = field.getAnnotation(NotNull.class);
            try {
                if (notNull != null) {
                    if (Modifier.isPrivate(field.getModifiers())) {
                        field.setAccessible(true);
                    }
                    if (field.get(object) == null) {
                        result.add(field.getName());
                    }
                    if (Modifier.isPrivate(field.getModifiers())) {
                        field.setAccessible(false);
                    }
                }
            } catch (IllegalAccessException e) {
                Throwables.propagate(e);
            }
        }
         return result;
	}
} 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值