5

当我检查 StoredCredential 的实例是否为空时

if(storedCredential != null){
  //do something
}

Netbeans 7.1 显示以下警告:

bad operand types for binary operator '=='
  first type:  com.blah.dbcore.mypublic.beans.StoredCredential
  second type: <nulltype>

它编译正确并且没有抛出 RuntimeExceptions,但 Netbeans 仍然显示警告。使用“!=”检查实例是否不为空,会给出相同的错误。

下面的代码做同样的事情,但不太清楚:

if (!(storedCredential instanceof StoredCredential)) {
  //do something
}

Netbeans 对这个表达式没有任何问题。

因为它编译没有问题,所以我假设我将包含该类的 .jar 添加到库中的方式有​​问题。这是我在这个 jar 中遇到的唯一问题,这个 .jar 中没有其他类给我这个问题。

4

2 回答 2

1

我也遇到过这个问题。此外,在我尝试将问题类的实例传递给接受 Object 作为参数的方法时,出现以下错误:

required: String,Object
found: String,SomeClass
reason: actual argument SomeClass cannot be converted to Object by method invocation conversion

结果编译器无法确定我的类的正确类型。

我的课程(我们称之为 com.blah.lib.SomeClass)在一个 NB 项目(我们称之为项目 1)中,并在第 3 方 jar 中扩展了一个类,这是项目 1 的库。

另一个NB项目(我们称之为Project 2)依赖于Project 1并使用了com.blah.lib.SomeClass,但它的libs中没有第3方jar,所以在编译Project 2时,编译器无法确定完整的com.blah.lib.SomeClass 的继承。

所以解决方案是将第 3 方 jar 也添加到 Project 2 的库中。

我知道这已经有好几年了,但我想我会发布这个答案,以防它帮助其他人在未来谷歌搜索这个问题。

于 2014-05-30T14:58:25.983 回答
0

Netbeans 告诉您,在程序中的那个时候,storedCredential不可能为空。这可能意味着您已经storedCredential在该方法的前面调用了一个方法或访问了一个数据成员。

于 2012-05-14T21:57:31.723 回答