Java StringUtils.isNotBlank检查的NPE仍然导致eclipse@NotNull警告

Java StringUtils.isNotBlank检查的NPE仍然导致eclipse@NotNull警告,java,eclipse,annotations,notnull,jsr305,Java,Eclipse,Annotations,Notnull,Jsr305,我正在使用@NotNull注释, 如您所见,我正在使用: StringUtils.isNotBlank() 检查NP,但我仍然有Eclipse警告。如果我使用 oldlink!=空的 它不会显示警告 有人知道使用apache commons StringUtils时会出现什么问题吗 看起来只有此帮助、null检查和使用StringUtils.isNotEmpty(),甚至StringUtils.isNotBlank()也会执行相同的操作: 看起来只有此帮助、null检查和使用StringUtil

我正在使用@NotNull注释, 如您所见,我正在使用:

StringUtils.isNotBlank()

检查NP,但我仍然有Eclipse警告。如果我使用

oldlink!=空的

它不会显示警告

有人知道使用apache commons StringUtils时会出现什么问题吗


看起来只有此帮助、
null检查和使用
StringUtils.isNotEmpty()
,甚至
StringUtils.isNotBlank()
也会执行相同的操作:


看起来只有此帮助、
null检查和使用
StringUtils.isNotEmpty()
,甚至
StringUtils.isNotBlank()
也会执行相同的操作:


没有问题。当您使用
时=null
比较,编译器会看到您检查了null。当您使用对某个方法(如
isNotBlank()
)的调用时,编译器不知道该方法也会检查null。这就是为什么你仍然收到警告。但这是一个编译器警告,您可以忽略它。IntelliJ IDEA 13中的Apache
CollectionUtils.isNotEmpty()
也有类似的问题。它显示了潜在的NPE,即使这种方法检查它。我认为后一个版本的想法不这样做,实际上考虑Apache方法中发生了什么。@ F1SH我知道,但是他们可以改进这一点,因为ISNBLBAKANK()方法有一个空校验,所以当使用<代码> Apache CAMSONS <代码> @ TokRA时,它们可以引入一些异常,这不是一件容易的事。这将需要编译器查找该代码。在这种情况下,它是一种静态方法,可以实现。对于非静态方法,编译器不可能以可恢复的方式执行该操作。@f1sh我不是想研究该方法,Eclipse团队知道Apache Commons LIB,因此他们可以在框架中创建一些异常,这不需要任何涉及。。。只是试探一下,没问题。当您使用
时=null
比较,编译器会看到您检查了null。当您使用对某个方法(如
isNotBlank()
)的调用时,编译器不知道该方法也会检查null。这就是为什么你仍然收到警告。但这是一个编译器警告,您可以忽略它。IntelliJ IDEA 13中的Apache
CollectionUtils.isNotEmpty()
也有类似的问题。它显示了潜在的NPE,即使这种方法检查它。我认为后一个版本的想法不这样做,实际上考虑Apache方法中发生了什么。@ F1SH我知道,但是他们可以改进这一点,因为ISNBLBAKANK()方法有一个空校验,所以当使用<代码> Apache CAMSONS <代码> @ TokRA时,它们可以引入一些异常,这不是一件容易的事。这将需要编译器查找该代码。在这种情况下,它是一种静态方法,可以实现。对于非静态方法,编译器不可能以可恢复的方式执行该操作。@f1sh我不是想研究该方法,Eclipse团队知道Apache Commons LIB,因此他们可以在框架中创建一些异常,这不需要任何涉及。。。只是在寻觅。