Integer.getInteger()踩坑小记

博客探讨了Integer.getInteger()方法在查找System配置属性时可能导致null返回的问题,指出该方法会尝试将配置值转换为Integer,如果没有设置相应属性,则返回null。建议在编码时使用Integer.valueOf()来避免此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开头先问一下大家,想一想下面的num值为什么

Integer num = Integer.getInteger("4");

经过测试得出,num 等于 null,没有想到在这里居然踩坑了。
薛薇看一下源码:

public static Integer getInteger(String nm) {
        return getInteger(nm, null);
    }

 public static Integer getInteger(String nm, Integer val) {
        String v = null;
        try {
            v = System.getProperty(nm);
        } catch (IllegalArgumentException | NullPointerException e) {
        }
        if (v != null) {
            try {
                return Integer.decode(v);
            } catch (NumberFormatException e) {
            }
        }
        return val;
    }

这里注意
v = System.getProperty(nm);

它的意思是,Integer.getInteger()会去找System中的配置,
eg:我们在System中设置了属性(“111”,0),此时Integer.getInteger(“111”)会返回0,如果没有进行设置属性,当然返回的是null

所以在编码的时候还是得看一眼调用方法的实现,哪怕就一眼,也会避免踩一些奇怪的坑,以后编码时还是老实用Integer.valueOf()方法取值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值