当前位置: 首页 > 面试题库 >

Java 8 getters是否应该返回可选类型?

丁书
2023-03-14
问题内容

Optional Java 8中引入的type对许多开发人员来说都是新事物。

getter方法返回Optional<Foo>类型代替经典方法Foo是一种好习惯吗?假设值可以是null


问题答案:

当然,人们会做他们想要的。但是添加此功能时我们确实有明确的意图,并且它并不是通用的Maybe类型,因为许多人希望我们这样做。我们的意图是为库方法返回类型提供一种有限的机制,其中需要一种明确的方法来表示“无结果”,并且使用null这种方法极有可能导致错误。

例如,你可能永远不要将其用于返回结果数组或结果列表的东西;而是返回一个空数组或列表。你几乎永远不应将其用作某些内容或方法参数的字段。

我认为,通常将其用作获取方法的返回值肯定会过度使用。

应该避免使用Optional并没有什么错,这并不是很多人希望的那样,因此我们非常担心过度使用的风险。

(公共服务声明:除非你可以证明它永远不会为null,否则请不要调用Optional.get;而应使用诸如orElse或的安全方法之一ifPresent。回想起来,我们应该调用get诸如getOrElseThrowNoSuchElementException或之类的东西,使它更加清楚地表明这是一种非常危险的方法这首先破坏了的整个目的Optional。经验教训(更新:Java 10具有Optional.orElseThrow(),在语义上与等效get(),但其名称更合适。)



 类似资料:
  • Java 8中引入的类型对于很多开发人员来说是一个新鲜事物。 返回类型的getter方法代替经典的是一个好的实践吗?假设值可以是。

  • 可选的用于表示可为空的对象,该类的一些用途包括 作为方法返回类型,作为返回null以 表示没有可用值的替代方法 区分“未知”(例如,不存在于映射中)和“已知无值”(存在于映射中,具有值 optional.缺席()) 将可为null的引用包装起来存储在不支持null的集合中(不过有几种其他方法应该首先考虑) 对于第一种情况,我是否需要在所有可为空的返回方法中返回可选的?

  • 问题内容: 假设我们在Python 3.x中(我猜在Python 2.6和Python 2.7中也)具有以下功能: 如果运行它们,我们将得到: 这三个函数提供相同的结果(值和类型),它们似乎是等效的。 但是,其中哪个陈述更正确? 这些定义中是否有副作用? 相同的问题适用于以下情况,并返回了多个值: 在这种情况下,每个函数都返回一个 元组 ,但是我的问题仍然保持不变。 问题答案: Python中的括

  • 我正在将我的PHP代码从mysql更新到mysqli,但我似乎找不到这个问题的答案:mysqli更新查询是否返回结果? 使用mysql,我可以 即使该查询不返回任何行,也将为true。 现在,在mysqli代码中,我有如下内容(为了清晰起见,删除了错误处理): 结果是错误的。 对于记录来说,查询是有效的(忽略我可能在将其转录到stackoverflow中时犯的任何错别字),字段1在数据库中按预期正

  • 我的问题是:用“async”定义一个返回“promise”的函数(形式上)正确吗?是否容易出现“内存泄漏”? 对于那些喜欢用自然语言阅读我用js发布的内容的人。 我正在给一个知道JS是如何真正实现的人打电话,然后知道引擎是如何管理我提出的场景的:我们应该避免对返回“promise”的函数使用“async”吗? 我提出的问题不会改变任何人的生活,最终也不会影响表演。事实是,在编写代码时,我喜欢关注代

  • 这方面的最佳实践是什么。NET与Web API?特别是WebRESTAPI。当异常发生时,RESTAPI是否应该在响应体中返回异常? 当然,我会返回500或类似的HTTP状态。但是当我用这个错误代码响应时,最佳实践是什么?或者更好的是,规范或RESTAPI对此有何规定? 返回异常(我所做的)