这里是NonNull
注释龙目岛的java-doc:
如果放入参数,lombok将在开头插入一个空检查 方法/构造函数的主体,抛出一个{@code NullPointerException},参数的名称为消息。如果穿上 一个字段,任何生成的方法都会为该字段赋值 也产生这些零检查。请注意,任何名为{@code的注释 带有任何外壳和任何包的NonNull}将导致nullcheck 为生成的方法生成(并将注释复制到 getter返回类型和生成的方法的任何参数),但是 仅此注释(如果存在于参数上)将产生 在null检查中插入您的其他手写方法。
警告:如果java社区确实决定支持单个 {@code @NonNull}注释(例如通过JSR305),然后这个 注释将从lombok包中删除。 如果需要更新import语句会让您感到害怕,那么您应该使用 你自己的注释名为{@code @NonNull}而不是这个。
拥有自己的注释的最简单方法是什么,让我们说 NonNull
Nonnull
,然后根据我的注释注入null-check吗?
更新:我的问题很热,有一个注释用于方法参数。
答案 0 :(得分:1)
首先,您需要将其命名为nonNull
(套管无关紧要)。 Lombok不会识别NotNull
。此外,您需要设置另一个Lombok注释(例如@Data
,@Setter
,...),以便您的类型由Lombok处理。
总结您的自定义注释并不像@lombok.NonNull
- 注释本身那样有价值。如果您的类型不包含任何其他Lombok注释,例如:
@lombok.NonNull
- 注释中获益的示例中,您的自定义注释甚至无法处理。
class NoLombokAnnotationsAnywhere {
void testMe(@lombok.NonNull String nonNull) { /* .. */ }
}
只要致电NullPointerException
,就会生成new NoLombokAnnotationsAnywhere().testMe(null)
。虽然这不会随你的自定义注释抛出任何东西。当然,这只适用于您没有任何其他Lombok注释的情况。一旦类型被Lombok处理,您的注释也会被处理。
如果您有自己的NonNull
- 注释,那么您可以添加另一个看起来合适的Lombok注释,Lombok会为您添加一个空检查,例如:
@Data
class NonNullData {
@mycustom.Nonnull
String value;
}
// Calling the following throws a NullPointerException as expected
new NonNullData(null);
您可能还会发现以下问题:Support annotations named @NotNull as well as @NonNull