Как мне проверить, что строка пуста или равна нулю, используя оператор if в Java?

#java #if-statement #null #apache-stringutils

#java #if-statement #null #apache-stringutils

Вопрос:

Сначала мне нужно получить само перечисление, используя RegoDocumentType.getByValue(createOrderRequest.getIdDocument().getIdType())

Затем проверьте значение null, если оно не равно null, оно вернет значение enum . В противном случае он вернет значение createOrderRequest.getIdDocument().getIdType() по умолчанию.

Итак, как мне реорганизовать код, чтобы использовать только один оператор if для обработки как NRIC / 11B, так и для преобразования значения smag в значение rego с использованием RegoDocumentType enum?

Вот мое перечисление:

 public enum RegoDocumentType {
    
    NRIC_11B("NRIC/11B", IdentityType.NRIC.toValue()),
    FIN("Employment Pass", IdentityType.EM_PASS.toValue()),
    ;
    private static final Map<String, RegoDocumentType> BY_SMAG_VALUE = new HashMap<>();
    static {
        for (RegoDocumentType identityType : values()) {
            BY_SMAG_VALUE.put(identityType.getSmagValue().toLowerCase(), identityType);
        }
    }
    private final String smagValue;
    private final String regoValue;
    RegoDocumentType(String smagValue, String regoValue) {
        this.smagValue = smagValue;
        this.regoValue = regoValue;
    }
    public String getSmagValue() {
        return smagValue;
    }
    public String getRegoValue() {
        return regoValue;
    }
    public static RegoDocumentType getBySmagValue(String smagValue)
    { return BY_SMAG_VALUE.get(smagValue.toLowerCase()); }
}
 

Комментарии:

1. Вы имели в виду RegoDocumentType. getBySmagValue(createOrderRequest.getIdDocument().getIdType()) ?

2. О да, это то, что я имел в виду. Извините за опечатку.

3. Вы ожидаете, что createOrderRequest.getIdDocument().getIdType() это может быть null, или вы ожидаете, что createOrderRequest.getIdDocument().getIdType() это значение не входит в число предопределенных значений enum?

4. Я ожидаю, что createOrderRequest.getIdDocument().getIdType() может быть нулевым.

5. Из вашего примера вы хотите логику: IF createOrderRequest.getOrderId() is not null AND createOrderRequest.getIdDocument().getIdType() is "FIN" THEN return "Employment Pass" ELSE return createOrderRequest.getIdDocument().getIdType() это то, что вам нужно? Что, если createOrderRequest.getIdDocument().getIdType() значение равно null?

Ответ №1:

     String something = "";
    if(something == null || something.isEmpty()) {
        // return A
    } else {
        // return B
    }
 

или

     String something = "";
    return something == null || something.isEmpty() ? [value A] : [value B];
 

Ответ №2:

createOrderRequest.getIdDocument().getIdType() в вашем случае, похоже, это строка. Вы не можете вернуть строку из getBySmagValue . Рассмотрите возможность возврата null или создания исключения вместо этого:

 public static RegoDocumentType getBySmagValue(String smagValue) { 
    if (smagValue == null) reutrn null;
    return BY_SMAG_VALUE.get(smagValue.toLowerCase()); 
}
 

или

 public static RegoDocumentType getBySmagValue(String smagValue) { 
    if (smagValue == null) throw new IllegalStateException();
    return BY_SMAG_VALUE.get(smagValue.toLowerCase()); 
}