gpt4 book ai didi

java - 封装 Integer.parseInt() 的好方法

转载 作者:IT老高 更新时间:2023-10-28 11:39:49 29 4
gpt4 key购买 nike

我有一个项目,我们经常使用 Integer.parseInt() 将 String 转换为 int。当出现问题时(例如,String 不是数字而是字母a 或其他),此方法将抛出异常。但是,如果我必须在任何地方处理我的代码中的异常,这很快就会变得非常难看。我想把它放在一个方法中,但是,我不知道如何返回一个干净的值以表明转换出错了。

在 C++ 中,我可以创建一个接受指向 int 的指针并让方法本身返回 true 或 false 的方法。但是,据我所知,这在 Java 中是不可能的。我还可以创建一个包含真/假变量和转换值的对象,但这似乎也不理想。全局值也是如此,这可能会给我的多线程带来一些麻烦。

那么有没有一种干净的方法可以做到这一点?

最佳答案

您可以返回 Integer 而不是 int,在解析失败时返回 null

很遗憾,Java 没有提供一种在内部没有抛出异常的情况下执行此操作的方法 - 您可以隐藏异常(通过捕获它并返回 null),但如果您这样做,它仍然可能是一个性能问题重新解析数十万位用户提供的数据。

编辑:这种方法的代码:

public static Integer tryParse(String text) {
try {
return Integer.parseInt(text);
} catch (NumberFormatException e) {
return null;
}
}

请注意,如果 text 为空,我不确定这会发生什么。您应该考虑到 - 如果它代表一个错误(即您的代码很可能传递一个无效值,但绝不应该传递 null),那么抛出异常是合适的;如果它不代表错误,那么您可能应该像返回任何其他无效值一样返回 null。

最初这个答案使用 new Integer(String) 构造函数;它现在使用 Integer.parseInt 和装箱操作;这样,小值最终会被装箱到缓存的 Integer 对象中,从而在这些情况下更有效。

关于java - 封装 Integer.parseInt() 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1486077/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com