首页 文章

是什么原因导致“二元运算符'=='的错误操作数类型”与第二种类型<nulltype>?

提问于
浏览
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中没有其他类给我这个问题 .

2 回答

  • 2

    Netbeans告诉你,在程序的那一点上, storedCredential 不可能为null . 这可能意味着您已在该方法中之前的 storedCredential 上调用过方法或访问过数据成员 .

  • 0

    我也遇到过这个问题 . 此外,我试图将问题类的实例传递给接受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项目中(我们称之为Project 1)并在第三方jar中扩展了一个类,这是一个Project 1的库 .

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

    所以解决方案是将第三方jar添加到Project 2的库中 .

    我知道这已经有好几年了,但我想我会发布这个答案,以防万一它可以帮助其他人将来搜索这个问题 .

相关问题