2012-05-04 33 views
5

Cuando puedo comprobar si la instancia de StoredCredential es nulo¿Qué causa "tipos de operandos malos para operador binario '=='" con el segundo tipo <nulltype>?

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

Netbeans 7.1 muestra la siguiente advertencia:

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

Se compila correctamente y no arroja RuntimeExceptions, pero Netbeans aún muestra la advertencia. Comprobando si la instancia no es nula, con '! =', Se obtiene el mismo error.

El siguiente código hace lo mismo, pero es mucho menos claro:

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

Netbeans tiene ningún problema con esta expresión.

Como no tiene problemas para compilar, asumo que hay algo mal con la forma en que agregué el .jar que contiene la clase a la biblioteca. Este es el único problema que tengo con este jar, sin embargo, ninguna otra clase en este .jar me da este problema.

+2

en primer lugar, probablemente quieras decir 'netbeans 7.1' no' netbeans 1.7'. pero, ¿cuál es el tipo deCertificado almacenado? – alegen

+0

Si su error menciona, por ejemplo, el operador '| =', todo estará claro ya que ese solo opera en números y booleanos. –

+0

@alegen Oops, sí, netbeans 7.1, lo arregló: P El tipo es StoredCredential extends Bean, que es un Objeto que implementa Serializable, nada especial, creo. Observé un campo transitorio en la clase Bean, pero no creo que eso genere este tipo de problema. – MarcoPogo

Respuesta

2

He tenido este problema, también. Asimismo, cuando traté de pasar una instancia de la clase problema en un método que acepta un objeto como un parámetro, tengo el siguiente error:

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

Resultó que el compilador no pudo determinar el tipo correcto de mi clase.

Mi clase (vamos a llamarlo com.blah.lib.SomeClass) estaba en un proyecto NB (vamos a llamarlo Proyecto 1) y se extendió una clase en un frasco de tercera parte, que era una biblioteca para el Proyecto 1.

Otro proyecto de NB (llamémoslo Proyecto 2) dependía del Proyecto 1 y utilizaba com.blah.lib.SomeClass, pero no tenía el jar de terceros en sus libs, por lo que al compilar el Proyecto 2, el compilador no pudo determinar la herencia completa de com.blah.lib.SomeClass.

Así que la solución fue agregar el jar de terceros a las bibliotecas del Proyecto 2 también.

Sé que esto es años, pero pensé en publicar esta respuesta en caso de que ayude a alguien más Google en el futuro.

+0

Oh wow, había olvidado que esta pregunta todavía estaba abierta, pero esta era de hecho la solución. ¡Gracias! – MarcoPogo

0

Netbeans le dice que en ese punto del programa, storedCredential no puede ser nulo. Esto probablemente significa que ya ha llamado a un método o ha accedido a un miembro de datos en storedCredential anteriormente en ese método.

Cuestiones relacionadas