ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

IDEA写Java实验踩坑:重写equals忘记判断空指针?

IDEA写Java实验踩坑:重写equals忘记判断空指针? 在IDEA写Java大作业、实验报告实体类重写equals的时候很多同学直接写return id.equals(o.id);如果id是null直接空指针异常这是实验报告最容易丢分的坑结合本次实验的Goods商品类演示完整安全写法IDEA一键生成equals也需要手动优化。实验需求Goods类商品编号goodsId商品名称goodsName价格price。规则商品编号相同判定为同一个商品重写equals和toString。完整Goods代码public class Goods {private String goodsId;private String goodsName;private double price;//构造 public Goods(String goodsId, String goodsName, double price) { this.goodsId goodsId; this.goodsName goodsName; this.price price; } //get set public String getGoodsId() {return goodsId;} public void setGoodsId(String goodsId) {this.goodsId goodsId;} public String getGoodsName() {return goodsName;} public void setGoodsName(String goodsName) {this.goodsName goodsName;} public double getPrice() {return price;} public void setPrice(double price) {this.price price;} //重写toString AltInsert生成 Override public String toString() { return 商品编号goodsId商品名称goodsName价格price; } // 重写equals规避空指针 Override public boolean equals(Object o) { if (this o) return true; if (o null || getClass() ! o.getClass()) return false; Goods goods (Goods) o; // Objects.equals 自动处理null推荐 return java.util.Objects.equals(goodsId, goods.goodsId); }}重点坑点解析❌ 错误写法return goodsId.equals(goods.goodsId);如果goodsId是null直接抛出NullPointerException。✅ 推荐写法Objects.equals(a,b)会自动处理null实验写这个老师会加分。测试代码IDEA运行public class TestGoods {public static void main(String[] args) {Goods g1 new Goods(“G001”,“笔记本”,39.9);Goods g2 new Goods(“G001”,“钢笔”,12.5);System.out.println(g1);System.out.println(“是否为同一商品”g1.equals(g2));}}输出商品编号G001商品名称笔记本价格39.9是否为同一商品true实验总结重写equals先判断thiso快速返回判断o不能是null并且类型一致比较属性优先使用Objects.equals避免空指针重写equals建议同步重写toStringIDEA打印对象查看信息更方便结尾很多同学在IDEA写实验代码在这里丢分这篇可以直接当作实验报告参考。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进