java - 重写 if 语句,以更简洁的方式抛出异常

标签 java option-type predicate code-cleanup

假设我们有一个像这样的 if 语句:

public A save(A a) {
    if (isValid.test(a)) {
        return aRepository.save(a);
    }
    throw new ANotValidException("A is not valid");
}

isValid 是一个谓词,它可能看起来像:

private Predicate<A> isValid = (a) -> (a != null);

你觉得怎么样?我可以以某种方式让它更干净吗? 我的意思是,例如使用 Optional 将其减少为 1 行,并使用 .orElseThrow();

最佳答案

使用可选抛出自定义异常的更精确版本应为:

public A save(A a) throws ANotValidException { // throws the custom exception
    return Optional.ofNullable(a) // since your predicate is to check for not null 
                   .map(aRepository::save)
                   .orElseThrow(() -> new ANotValidException(a + "A is not valid"));
}

关于java - 重写 if 语句,以更简洁的方式抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54652750/

相关文章:

java - 在Windows中使用Eclipse增加Java堆大小

java - 如何使用 Spring Boot、Gradle 和 JSP 构建项目

haskell - 折叠一个可折叠的 Maybe (Monoid),忽略 Haskell 中的缺失值

json - 展开可选元素时出错

xslt - XPath/XSLT 嵌套谓词 : how to get the context of outer predicate?

java - 了解 lambda 和/或谓词

java - 如何访问来自不同类的变量

java - 获取图像的路径并使用 BufferedImage 加载它

java - 如何使用java中可选对象的参数调用方法

list - 如何为导入或输出列表的谓词声明 pred?