gpt4 book ai didi

java - 在 Java 集合上使用 get() 时如何避免对 null 进行大量检查?

转载 作者:搜寻专家 更新时间:2023-11-01 01:58:06 25 4
gpt4 key购买 nike

我声明如下

getLD().get(cam.getName()).getAGS().get(aG.getName())

getLD()、getAGS() 返回 Java 集合

如果 getAGS() 为空,或者 getAGS().get(aG.getName()) 的结果,我都不会认为这是错误是空的。然而,检查这些 null 条件相当困惑并且有些痛苦。

例如if(getLD().get(camp.getName()).getAGS() !=null && getLD().get(cam.getName()).getAGS().get(aG.getName()) != null) {

任何人都可以建议处理此问题的最佳方法吗?显然我可以创建一个变量 x = getLD().get(camp.getName()).getAGS() 来缩短代码,但是有没有一种方法我不必这样做两次检查是否为空?

非常感谢所有帮助!

最佳答案

IMO,最好的策略是设计您的数据结构,以便首先没有任何空值。例如,使用空集合或零长度数组,或 "" 而不是 null。对于应用程序类,请考虑实现可以代替 null 的特殊实例。

第二种策略是用自定义类替换公开的通用数据结构(例如映射、列表、数组)。这将实现细节隐藏在一个类中,并允许您使用 Java 的静态类型来避免许多需要空检查的情况。

第三种策略是创建一个辅助类,其中包含一组实现通用操作的方法;例如“为 LD 获取 Cam”。 (IMO,与其他方法相比,这种方法是一个糟糕的选择,但至少它减少了代码重复的数量。)

在您无法摆脱空值的情况下,您别无选择,只能对它们进行显式测试。 (有人提议在 Java 7 中添加一个“猫王”运算符作为 Coin 项目的一部分,但不幸的是它被取消了。)

关于java - 在 Java 集合上使用 get() 时如何避免对 null 进行大量检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3454563/

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