有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中检查空引用的乐观方法

在使用空引用或对象来避免NullPointerException之前,任何精通Java的人/专家都能告诉我检查空引用或对象的乐观方法是什么吗

在我的代码中,我有100多个字段,其中大多数字段是在请求中传递值所必需的,但每次在请求中传递值之前,我都需要执行空检查,以避免NullPointerException

我在下面展示了一段代码,每次检查每个字段的空值(比如在我的一个文件中检查了70多次),这看起来不好,代码变得非常难看和不可读。有什么方法可以编写方法并通过它执行空对象检查吗

基本上,我看起来更好,更乐观,更快的方式做这件事,任何快速的帮助是非常需要的

if(amount != null && amount != "" && !amount.isEmpty())
        AIMRequest.put("x_Amount", amount);

if(currency != null && currency != "" && !currency.isEmpty())
        AIMRequest.put("x_Currency_Code", currency);

if(expDate != null && expDate != "" && !expDate.isEmpty())
        AIMRequest.put("x_Exp_Date", expDate);

...........so on

共 (2) 个答案

  1. # 1 楼答案

    根据if的条件,比较String的条件,因此制作一个方法:

    public boolean isValid(String s) {
        return s != null && s != "" && !s.isEmpty();
    }
    

    如果要使用此方法比较对象,请更改签名public boolean isValid(Object o)

    您的代码将是干净的,如下所示:

    if(isValid(amount))
            AIMRequest.put("x_Amount", amount);
    
    if(isValid(currency)
            AIMRequest.put("x_Currency_Code", currency);
    
    if(isValid(expDate)
            AIMRequest.put("x_Exp_Date", expDate);
    

    但是如果您可以在array中收集所有对象:

    public boolean isValid(Object[] os) {
        for (String s : os) {
            boolean isValid = s != null && s != "" && !s.isEmpty();
            if (!isValid) return false;
        }
        return true;
    }
    
  2. # 2 楼答案

    add("x_Amount", amount);
    add("x_Currency_Code", currency);
    add("x_Exp_Date", expDate);
    
    void add(String name, String value)
    {
        if(value!=null && !value.isEmpty())
            AIMRequest.put(name, value); 
    }