在java中返回对象的最佳实践

Jav*_*per 2 java design-patterns

假设我们有一个名为Intersection的类,带有一个findIntersect(line1, line2)方法.它返回一个名为的对象point,其中包含2个字段xy坐标.现在,如果输入是2条平行线,那么与用户无法获得结果的最佳通信方式是什么?虽然示例是特定于行的,但问题是通用的 - 假设一个方法返回值对象,如果条件不匹配则返回什么?一些选项是:

  1. 返回null(问题:在许多地方读取,如果可能,应避免返回null返回值)
  2. 有在物体,其确定对象是有效的,类似的方法hasNext()Iterator
  3. 扔一个Exception

请让我知道最好的方法.

Mat*_*all 11

无论你做什么,都要记录下来.作为函数的调用者,我希望在方法的JavaDoc中清楚地描述确切的行为,特别是边缘情况.

在这种特殊情况下,我可能会回复一个Optional<Point>.Optional是非常好的,因为它非常清楚地传达了一个价值可能不存在的信息.如果声明的返回类型是,那么理智的API永远不会 - 永远不会返回.nullOptional

更多阅读:使用和避免null避免!= null语句

  • Upvote用于记录它.只要我能轻易告诉我们什么都回来了,我很开心. (3认同)