gpt4 book ai didi

java - 如何将方法标记为 "afterwards, parameter X cannot be null"?

转载 作者:行者123 更新时间:2023-11-30 11:41:56 28 4
gpt4 key购买 nike

我有这个方法:

 @Override
public void foo( @Nullable Bar bar ) {
Validate.notNull( bar, "bar is null" );
bar.x();
}

由于该方法是在别处定义的,所以我不能用@NotNull 标记bar。对 Validate.notNull() 的调用将确保 bar 不为空,但当然 FindBugs 和类似工具对这个约束一无所知。

有没有一种简单的方法可以教 FindBugs 在调用 Validate.notNull() 之后,bar 必须不为空?

简单,我的意思是我必须在一个地方定义它的方式;当然,我可以在我的代码中添加数百万个 @SuppressWarnings... :-)

最佳答案

更改 Validate.notNull 以返回引用,将其返回值标记为 @NotNull:

@NotNull
public static <T> T notNull(@Nullable T reference, String message) {
if (reference == null) {
throw new NullPointerException(message);
}
return reference;
}

然后使用 notNull 调用的结果代替原始参数值:

public void foo(@Nullable Bar bar) {
bar = Validate.notNull(bar, "bar is null");
bar.x();
}

关于java - 如何将方法标记为 "afterwards, parameter X cannot be null"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12035715/

28 4 0
文章推荐: java - 如何在android中为字符串应用字幕
文章推荐: javascript - 如何使用 javascript 使用来自 php 函数的数组元素填充
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com