可以使用 Java8 中的 Optional 类来封装解析数字的方法,如下所示:

import java.util.Optional;

public class NumberParser {
    private static final int DEFAULT_NUMBER = 0;

    public static Optional<Integer> parse(String input) {
        try {
            int number = Integer.parseInt(input);
            return Optional.of(number);
        } catch (NumberFormatException e) {
            return Optional.of(DEFAULT_NUMBER);
        }
    }
}

这个类中的 parse 方法接收一个字符串参数,尝试将其解析为整数,如果解析成功,返回一个 Optional 包含解析后的整数值;如果解析失败,返回一个 Optional 包含默认数字值。

下面是一个使用示例:

public class Main {
    public static void main(String[] args) {
        String input1 = '123';
        String input2 = 'abc';

        Optional<Integer> result1 = NumberParser.parse(input1);
        Optional<Integer> result2 = NumberParser.parse(input2);

        System.out.println(result1.get()); // 输出:123
        System.out.println(result2.get()); // 输出:0
    }
}

在上面的示例中,我们使用 NumberParser 类的 parse 方法来解析两个字符串,分别是 '123' 和 'abc'。第一个字符串可以成功解析为整数 123,第二个字符串无法解析,返回默认数字值 0。

最后,我们使用 Optional 的 get 方法获取解析结果,如果解析成功,会返回解析后的整数值;如果解析失败,会抛出 NoSuchElementException 异常。因此,在实际使用中,我们应该使用 isPresent 方法判断 Optional 是否包含值,或者使用 orElse 方法获取默认值。例如:

if (result1.isPresent()) {
    System.out.println(result1.get()); // 输出:123
} else {
    System.out.println('解析失败');
}

int number = result2.orElse(DEFAULT_NUMBER);
System.out.println(number); // 输出:0

使用 Optional 可以有效避免 NullPointerException 异常,并提供更安全、更清晰的代码结构。

Java 使用 Optional 安全解析数字,并返回默认值

原文地址: https://www.cveoy.top/t/topic/ovPD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录