是否可以用Java Optional证明返回值不为空?

z4bn682m  于 2023-01-07  发布在  Java
关注(0)|答案(2)|浏览(90)

是否可以用Java Optional证明返回值不是null
Most tools and frameworks只关心参数,但我想用类型表示返回值不是null(而不是在JavaDoc中这样做)。

UPDATE看起来您可以同意团队使用Optional作为返回值,如果您想表达可能的null和直接对象(当它肯定不为空时):

public Optional<Job> getJob() {  ... }
public Job extractJob(NonNullJobHolder<Job> holder) { ... }
9wbgstp7

9wbgstp71#

我不知道为什么你会有这样的印象,即它们中的大多数只适用于参数。

    • 组织. eclipse. jdt.注解.非空**
@Documented
@Retention(value=CLASS)
@Target(value={FIELD,METHOD,PARAMETER,LOCAL_VARIABLE})
public @interface NonNull
    • org. jetbrains.注解.非空**

@NotNull注解实际上是一个显式契约,声明:

  • 方法不应返回null
  • 变量(字段、局部变量和参数)不能包含空值

用法:

    • javax.验证.约束.非空**
@Target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER})
@Retention(value=RUNTIME)
@Documented
@Constraint(validatedBy={})
public @interface NotNull
    • javax.注解。非空**
@Documented
@TypeQualifier
@Retention(value=RUNTIME)
public @interface Nonnull

用法:

因此,您可以在您的方法中随意使用这四种方法中的任何一种。

raogr8fs

raogr8fs2#

您可以使用.OrElse()。请参阅以下示例

Optional<String> response = Optional.of("Not Null");
    Optional<String> response2 = Optional.empty();
    System.out.println(response.orElse(""));
    System.out.println(response2.orElse("Dont want to return null"));

相关问题