gpt4 book ai didi

java - 使用 StringUtils.isEmpty 而不会丢失有关空指针的编译器警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:30 25 4
gpt4 key购买 nike

与通常的 if (myString == null || myString.equals("")) 不同,我倾向于使用 org.apache.commons.lang.StringUtils 类并执行 if (StringUtils.isEmpty(myString))

然而,这 - 至少我这样做的方式 - 带来了巨大的缺点:因为 FindBugs - 或编译器警告机制,f。前任。来自 Eclipse - 将不再看到显式空检查,它将不再将 myString 视为潜在的空指针,因此它将不再发出有关潜在(或确定)空指针的警告,并且在我看来,这些警告非常有用。

示例(已添加):

import org.apache.commons.lang.StringUtils;

public class TestWarning
{
void testWarning(String myString)
{
//if (myString == null || myString.equals("")) // With this, the last line shows the warning.
if (StringUtils.isEmpty(myString)) // With this, no warning.
{
// Anything.
}
int x = myString.length(); // Warning is here: "Potential null pointer access: The variable myString may be null at this location"
}
}

所以我只是想确保没有办法消除或最小化这一缺点,以便可以使用 StringUtils.isEmpty 并仍然收到空指针警告。也许像 @Nullcheck 这样的注释可以添加到 isEmpty 方法或其他东西?

已添加:例如,是否可以创建一个自定义注解,如 @Nullcheck,将其添加到 isEmpty 的参数中,如 public static boolean isEmpty(@Nullcheck String str) 只是为了表明该方法对该 arg 进行空检查,并使编译器警告机制或 FindBugs 处理 if (StringUtils.isEmpty(myString)) 就像显式空检查一样?

最佳答案

如果你用@Nullable注解myString,即

void testWarning(@Nullable String myString)

那么至少 eclipse 会在您取消引用时报告警告。

我同意 FindBugs 也应该对此发出警告,但我也无法让它这样做。

关于java - 使用 StringUtils.isEmpty 而不会丢失有关空指针的编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24056657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com