时月oe 2024-10-29 15:08 采纳率: 50%
浏览 3

java如何中断流式控制

我想要实现一个判断null的校验链,代码如下:

List<Node> a = new ArrayList<>();
        boolean result = EmptyValidator.build()
                .isNotEmpty(a)
                .isNotEmpty(a.get(0))
                .isNotEmpty(a.get(0).getStr()).getResult();

最终想要实现的效果是如果第一个判断isNotEmpty(a)不成立的话,后面的两个isNotEmpty直接中断不再执行,因为会引发数组越界或者空指针问题,只有

但是我目前还没能查到有什么好的方式可以中断这条执行链,希望大家可以帮忙看一下,十分感谢。

  • 写回答

1条回答 默认 最新

  • 路漫漫,其修远兮 2024-10-29 15:13
    关注

    chatgpt 回答如下 解决了麻烦帮忙点个采纳 谢谢

    import java.util.ArrayList;
    import java.util.List;
    
    class Node {
        private String str;
    
        public Node(String str) {
            this.str = str;
        }
    
        public String getStr() {
            return str;
        }
    }
    
    class EmptyValidator {
        private boolean valid = true;
    
        private EmptyValidator() {}
    
        public static EmptyValidator build() {
            return new EmptyValidator();
        }
    
        public EmptyValidator isNotEmpty(List<?> list) {
            if (valid) {
                valid = list != null && !list.isEmpty();
            }
            return this;
        }
    
        public EmptyValidator isNotEmpty(Object obj) {
            if (valid) {
                valid = obj != null;
            }
            return this;
        }
    
        public EmptyValidator isNotEmpty(String str) {
            if (valid) {
                valid = str != null && !str.isEmpty();
            }
            return this;
        }
    
        public boolean getResult() {
            return valid;
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            List<Node> a = new ArrayList<>();
            boolean result = EmptyValidator.build()
                    .isNotEmpty(a)
                    .isNotEmpty(a.isEmpty() ? null : a.get(0)) // Check if the list is empty before accessing
                    .isNotEmpty(a.isEmpty() ? null : a.get(0).getStr()) // Same here
                    .getResult();
    
            System.out.println("Validation result: " + result);
        }
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月29日