java包装类型的小坑

怡情已然82

有一个bean,有一个Integer类型的field。需求是当这个field为1时在页面上打勾。

判断方法:


bean != null && bean.getAntiUninstall() == 1;

结果jsp老是显示错误,仔细一查发现bean.getAntiUninstall() 返回了null,而null无法和1直接比较。

就我这个需求,得用


Objects.equals(bean.getAntiUninstall(), 1)

如果是比较大小,得用compareTo,用大于小于符号也是不行的!


看看Objects.equals的源码:


public static boolean equals(Object a, Object b) {

return (a == b) || (a != null && a.equals(b));

}

里面会调用equals方法,而Integer又重写的equals方法:


public boolean equals(Object obj) {

if (obj instanceof Integer) {

return value == ((Integer)obj).intValue();

}

return false;

}

所以两个equals相结合,才能正确判断!

主 楼 发布于:2019-07-10 18:13:37 编辑于:2019-07-10 18:17:52回复
天使光芒97

你善良像猫儿,你忠实像狗儿,你可爱像鸟儿,你识图像马儿,你出色像蝶儿,你勤劳像蜂儿,你什么都相像,也难怪大家都叫你——禽兽。

2 楼 发布于:2020-04-09 19:57:22
回复
边城浪子

春江潮水连海平,海上明月共潮生,花好月圆人团聚,祝福声声伴你行。朋友:中秋快乐!

3 楼 发布于:2023-07-31 21:44:21
回复

发表回复: