如果不存在这样的对象,在findXY方法中该怎么办?

JF *_*ier 1 java

假设我有一个Java方法

public X findX(...)
Run Code Online (Sandbox Code Playgroud)

它试图找到X满足某些条件的类型的对象(在参数中给出).通常这样的功能不能保证找到这样的对象.我可以想出不同的方法来解决这个问题:

  1. 可以编写一个public boolean existsX(...)具有相同签名的方法,该方法应首先调用.这可以避免任何类型的异常和空值处理,但可能会出现一些重复的逻辑.

  2. 可以只返回null(并在javadoc中解释).来电者必须处理它.

  3. 可以抛出一个检查过的异常(哪一个适合这个?).

你会建议什么?

Sam*_*s33 6

新的Java 8 Optional类是为此目的而创建的.

如果对象存在,则返回对象Optional.of(x)所在的位置x,如果不存在则返回Optional.empty().您可以Optional使用该isPresent()方法检查是否存在对象,并且可以使用该对象get().

https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html