代码之家  ›  专栏  ›  技术社区  ›  gavenkoa

是否可以用Java可选的文档来说明返回值不是空的?

  •  0
  • gavenkoa  · 技术社区  · 6 年前

    是否可以记录返回值不是 null 用Java Optional ?

    Most tools and frameworks 只关心参数,但我想在类型中表示返回值不是 无效的 (而不是在JavaDoc中)。

    更新 看一行你可以同意团队使用 可选的 如果你想表达可能的话作为返回值 无效的 当对象绝对不为空时直接指向对象:

    public Optional<Job> getJob() {  ... }
    public Job extractJob(NonNullJobHolder<Job> holder) { ... }
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Michael    6 年前

    我不知道为什么你会觉得他们中的大多数只适用于参数。

    org.eclipse.jdt.annotation.nonnull

    记录在案的 @保留(值=类) @目标(值字段、方法、参数、局部变量) public@interface非空 < /代码>

    org.jetbrains.annotations.notnull

    < Buff行情>

    @notnull注释实际上是一个显式协定,声明 即:

    • 方法不应返回空值
    • 变量(字段、局部变量和参数)不能包含空值
    < /块引用>

    用法:

    javax.validation.constraints.not空

    @target(value=method,field,annotation_type,constructor,parameter)
    @保留(值=运行时)
    @文件化的
    @约束(validatedby=)
    public@interface不为空
    < /代码> 
    
    

    javax.annotation.nonnull

    记录在案的 @类型限定符 @保留(值=运行时) public@interface非空 < /代码>

    用法:


    因此,请随意使用这四种方法中的任何一种。

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

    org.jetbrains.annotations.not空

    @notnull注释实际上是一个显式协定,声明 那就是:

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

    使用:

    intellij @NotNull

    javax.validation.constraints.not空

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

    javax.annotation.non空

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

    使用:

    javax @Nonnull


    所以你可以在你的方法中使用这四种方法中的任何一种。

        2
  •  1
  •   GolamMazid Sajib    6 年前

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