簡體   English   中英

是否可以用 Java Optional 記錄返回值不為空?

[英]Is it possible to document that return value is not null with Java Optional?

是否可以用 Java Optional記錄返回值不為null

大多數工具和框架只關心參數,但我想用返回值不為null類型來表達(而不是在 JavaDoc 中這樣做)。

UPDATE Looks line 你可以同意團隊使用Optional作為返回值,如果你想表達可能的null和直接對象,當它絕對不是 null 時:

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

我不知道為什么你的印象是它們中的大多數只適用於參數。

org.eclipse.jdt.annotation.NonNull

@Documented
@Retention(value=CLASS)
@Target(value={FIELD,METHOD,PARAMETER,LOCAL_VARIABLE})
public @interface NonNull

org.jetbrains.annotations.NotNull

@NotNull 注釋實際上是一個明確的合同,聲明:

  • 方法不應返回 null
  • 變量(字段、局部變量和參數)不能為空值

用法:

智能@NotNull

javax.validation.constraints.NotNull

@Target(value={METHOD,FIELD,ANNOTATION_TYPE,CONSTRUCTOR,PARAMETER})
@Retention(value=RUNTIME)
@Documented
@Constraint(validatedBy={})
public @interface NotNull

javax.annotation.Nonnull

@Documented
@TypeQualifier
@Retention(value=RUNTIME)
public @interface Nonnull

用法:

javax @Nonnull


因此,請隨意在您的方法中使用這四種中的任何一種。

您可以使用 .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"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM