2023年年底中国网络安全市场规模将突破千亿元
当调用这个方法的时候,调用者很清楚get方法返回的数据,有可能不存在,这样可以做一些更合理的判断,更好的防止空指针的错误! 当然,如果业务方真的需要根据id必须查询出User的话,就不要这样使用了,请说明,你要抛出的异常. 只有当考虑它返回null是合理的情况下,才进行Optional的返回 集合实体的返回
不是所有的返回值都可以这样用的!如果你返回的是集合: 觉得这样的语义更强,并且更能满足 软件设计原则中的 “单一职责”。 如果你觉得你的入参真的有必要可能传null,那请使用jsr 303或者jsr 305进行说明和验证! 请记住! Optional不能作为入参的参数! Optional作为返回值 当个实体的返回 那Optioanl可以做为返回值吗? 其实它是非常满足是否存在这个语义的。 你如说,你要根据id获取用户信息,这个用户有可能存在或者不存在。
你可以这样使用: 这个例子的方法 listUser,可能在告诉我们需要根据username查询所有数据集合,如果username是空,也要返回所有的用户集合. 当我们看到这个方法的时候,会觉得有一些歧义: “如果username是absent,是返回空集合吗?还是返回全部的用户数据集合?” Optioanl是一种分支的判断,那我们究竟是关注 Optional还是Optional.get()呢? 给大家的建议是,如果不想要这样的歧义,就不要使用它!
如果你真的想表达两个含义,就給它拆分出两个接口: Optional对空值的使用,我觉得更为贴切,它只适用于”是否存在”的场景。 如果只对控制的存在判断,我建议使用Optional。 Optioanl的正确使用 Optional如此强大,它表达了计算机最原始的特性(0 or 1),那它如何正确的被使用呢! Optional不要作为参数 如果你写了一个public方法,这个方法规定了一些输入参数,这些参数中有一些是可以传入null的,那这时候是否可以使用Optional呢? 给的建议是: 一定不要这样使用!
举个例子: (编辑:信阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |