在 Java 中检查 null 作为函数返回的正确方法是什么?



请参考下面代码中的注释 1、2-

在 swift 中,函数可以有一个可选的返回类型,在使用 Guard 调用函数时可以解开包装。我很想知道在 Java 中处理此类情况的可选返回的正确方法。

static Integer doCalc(Integer num1, Integer num2, char operation) {
        switch(operation) {
        case 'a':
            return num1 + num2;
        case 's':
            return num1 - num2;
        case 'm':
            return num1 * num2; 
        case 'd':
            return num2 != 0 ? num1 / num2 : -1; // **COMMENT 1**
        default: 
            System.out.println("not a valid operation. use 'a' 's' 'm' 'd'");
            return -1; // **COMMENT 2**
        }
}

不能null 的原始int(或任何其他原始)。您可以使用包装类(在本例中为 java.lang.Integer),并为错误输入返回 null 和有效输入的自动装箱值:

static Integer doCalc(int num1, int num2, char operation) {
    switch(operation) {
        case 'a':
            return num1 + num2;
        case 's':
            return num1 - num2;
        case 'm':
            return num1 * num2; 
        case 'd':
            return num2 != 0 ? num1 / num2 : null;
        default: 
            System.out.println("not a valid operation. use 'a' 's' 'm' 'd'");
            return null;
    }
}

处理此问题的正确方法是在操作无效时抛出IllegalArgumentException,在尝试除以零时抛出ArithmeticException

通常你会抛出一个异常。例如。

static int doCalc(int num1, int num2, char operation) {
    switch(operation) {
    case 'a':
        return num1 + num2;
    case 's':
        return num1 - num2;
    case 'm':
        return num1 * num2; 
    case 'd':
        if (num2 == 0) {
             throw new IllegalArgumentException("cannot divide by zero");
        }
        return num1 / num2;
    default: 
        throw new IllegalArgumentException("not a valid operation. use 'a' 's' 'm' 'd'");
    }
}

相关内容

  • 没有找到相关文章

最新更新