博客
关于我
java 入参校验_java开发参入参数校验
阅读量:797 次
发布时间:2023-03-28

本文共 3559 字,大约阅读时间需要 11 分钟。

字段校验方法与工具类实现

在软件开发过程中,字段校验是保证程序健壮性和稳定性的重要环节。本文将介绍两种字段校验的常用方法,并展示一种基于工具类的字段校验实现。

一:字段少的校验用法

在Spring或其他框架中,开发者通常会利用Assert方法进行字段校验。以下是两个典型的校验示例:

Assert.notNull(payable, "Payable不能为空!");
Assert.notNull(payable.getNettingStatus(), "Payable.nettingStatus不能为空!");

上述代码使用了Spring的Assert.notNull方法,用于校验对象和对象的特定属性是否为空。这种方法简单直观,适用于字段较少的情况。

二:字段多的校验用法(自定义工具类)

在实际项目中,字段数量可能会增加,手动校验每个字段会变得繁琐。为解决这一问题,我们可以编写自定义工具类来实现自动化校验。

以下是我们自定义的ObjectUtils工具类:

public class ObjectUtils {
private static final Logger logger = LoggerFactory.getLogger(ObjectUtils.class);
public static boolean validField(Object obj) throws IllegalAccessException {
if (obj == null) {
throw new IllegalAccessException("参数不能为空!");
}
for (Field field : obj.getClass().getDeclaredFields()) {
field.setAccessible(true);
if (StringUtils.isEmpty(field.get(obj))) {
logger.error("==》 " + field.getName() + "不能为空!");
throw new IllegalAccessException(field.getName() + "不能为空!");
}
}
return true;
}
public static boolean validFieldByFileldName(Object obj, String... fieldName) throws IllegalAccessException {
if (obj == null) {
throw new IllegalAccessException("参数不能为空!");
}
if (fieldName == null || fieldName.length < 1) {
throw new IllegalAccessException("fieldName参数不能为空!");
}
for (Field field : obj.getClass().getDeclaredFields()) {
field.setAccessible(true);
for (String name : fieldName) {
if (field.getName().equals(name)) {
if (StringUtils.isEmpty(field.get(obj))) {
logger.error("==》 " + field.getName() + "不能为空!");
throw new IllegalAccessException(field.getName() + "不能为空!");
}
}
}
}
return true;
}
public static boolean validFieldWithFilter(Object obj, String... filterField) throws IllegalAccessException {
if (obj == null) {
return false;
}
if (filterField == null || filterField.length < 1) {
throw new IllegalAccessException("fieldName参数不能为空!");
}
for (Field field : obj.getClass().getDeclaredFields()) {
field.setAccessible(true);
for (String filter : filterField) {
if (field.getName().equals(filter)) {
continue;
}
if (StringUtils.isEmpty(field.get(obj))) {
logger.error("==》 " + field.getName() + "不能为空!");
throw new IllegalAccessException("字段 " + field.getName() + " 不能为空!");
}
}
}
return true;
}
public static void main(String[] args) throws Exception {
Test user = new Test();
user.setName("阿斯蒂芬");
user.setAge(0);
// 测试validField方法
System.out.println("字段校验结果:" + validField(user));
// 测试validFieldWithFilter方法
System.out.println("过滤校验结果:" + validFieldWithFilter(user, new String[]{"sdf", "沙发垫"}));
}
}

工具类功能说明

  • validField方法

    • 检查对象及其所有属性是否为空。
    • 如果有空属性,抛出异常并记录日志。
  • validFieldByFileldName方法

    • 检查对象指定的字段是否为空。
    • 适用于需要校验特定字段的场景。
  • validFieldWithFilter方法

    • 过滤指定字段,校验剩余字段是否为空。
    • 适用于需要过滤字段后进行校验的场景。
  • 开发思路

    在开发ObjectUtils工具类时,我们主要考虑了以下几点:

  • 灵活性:支持校验单个字段或多个字段。
  • 可扩展性:通过参数化的方式支持多种校验场景。
  • 异常处理:统一异常类型,便于错误处理和日志记录。
  • 性能优化:使用setAccessible方法确保反射操作高效。
  • 总结

    字段校验是保证程序健壮性的重要环节。通过使用现有的框架工具或自定义工具类,我们可以简化校验逻辑,提高开发效率。在实际项目中,可以根据具体需求选择合适的校验方法,并通过工具类进行统一管理。

    转载地址:http://wdhfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现检查字符串是否包含字母表中所有字母的算法(附完整源码)
    查看>>
    Objective-C实现检查字符是否为字母算法(附完整源码)
    查看>>
    Objective-C实现检查数字是否为偶数算法(附完整源码)
    查看>>
    Objective-C实现检查数字是否为奇数算法(附完整源码)
    查看>>
    Objective-C实现检查给定图中是否存在循环算法(附完整源码)
    查看>>
    Objective-C实现检查给定字符串是否在camelCase中算法(附完整源码)
    查看>>
    Objective-C实现检查给定的字符串是否在kebabcase中算法(附完整源码)
    查看>>
    Objective-C实现检查给定的字符串是否在snake_case中算法(附完整源码)
    查看>>
    Objective-C实现检查给定的字符串是否是扁平(全部小写)的算法(附完整源码)
    查看>>
    Objective-C实现检检查回文字符串(区分大小写)算法(附完整源码)
    查看>>
    Objective-C实现检测U盘的插入与拔出 (附完整源码)
    查看>>
    Objective-C实现检测列表中的循环算法(附完整源码)
    查看>>
    Objective-C实现检测耳机插拔功能(附完整源码)
    查看>>
    Objective-C实现模拟键盘鼠标(附完整源码)
    查看>>
    Objective-C实现模板方法模式(附完整源码)
    查看>>
    Objective-C实现欧几里得距离(附完整源码)
    查看>>
    Objective-C实现欧几里得距离(附完整源码)
    查看>>
    Objective-C实现欧拉路径和欧拉回路算法(附完整源码)
    查看>>
    Objective-C实现正向CMDShell(附完整源码)
    查看>>
    Objective-C实现正数num使用递归找到它的二进制算法(附完整源码)
    查看>>