是否可以通过 Java 可选记录 return 值不为空?
Is it possible to document that return value is not null with Java Optional?
是否可以证明 return 值不是 null
而 Java Optional
?
Most tools and frameworks 只关心参数,但我想用 return 值不是 null
的类型来表达(而不是在 JavaDoc 中这样做) .
UPDATE Looks line you can agree with team to use Optional
as return value if you want to express possible null
and direct绝对不为空时的对象:
public Optional<Job> getJob() { ... }
public Job extractJob(NonNullJobHolder<Job> holder) { ... }
您可以使用 .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"));
我不知道为什么你觉得它们中的大多数只适用于参数。
org.eclipse.jdt.annotation.NonNull
@Documented
@Retention(value=CLASS)
@Target(value={FIELD,METHOD,PARAMETER,LOCAL_VARIABLE})
public @interface NonNull
org.jetbrains.annotations.NotNull
The @NotNull annotation is, actually, an explicit contract declaring
that:
- A method should not return null
- Variables (fields, local variables, and parameters) cannot hold a null value
用法:
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
用法:
所以请随意在您的方法中使用这四种方法中的任何一种。
是否可以证明 return 值不是 null
而 Java Optional
?
Most tools and frameworks 只关心参数,但我想用 return 值不是 null
的类型来表达(而不是在 JavaDoc 中这样做) .
UPDATE Looks line you can agree with team to use Optional
as return value if you want to express possible null
and direct绝对不为空时的对象:
public Optional<Job> getJob() { ... }
public Job extractJob(NonNullJobHolder<Job> holder) { ... }
您可以使用 .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"));
我不知道为什么你觉得它们中的大多数只适用于参数。
org.eclipse.jdt.annotation.NonNull
@Documented
@Retention(value=CLASS)
@Target(value={FIELD,METHOD,PARAMETER,LOCAL_VARIABLE})
public @interface NonNull
org.jetbrains.annotations.NotNull
The @NotNull annotation is, actually, an explicit contract declaring that:
- A method should not return null
- Variables (fields, local variables, and parameters) cannot hold a null value
用法:
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
用法:
所以请随意在您的方法中使用这四种方法中的任何一种。