2010-03-06 23 views
9

que tienen un objeto y quiero para detectar qué tipo es, por lo que se puede llamar¿Cómo saber si un objeto es un número entero o una cadena o isa booleano?

if (obj isa Integer) 
    put(key,integerval); 
if (obj isa String) 
    put(key,stringval); 
if (obj isa Boolean) 
    put(key,booleanval); 
+2

No tiene mucho sentido hacer esto. Incluso si desempaqueta los valores antes de insertarlos en su diccionario, se guardarán nuevamente en cuadro automáticamente. –

+0

Estoy ejecutando una consulta con los valores de contenido, y estaba tratando con columnas como cadena, así que obtengo ERROR/ContentValues ​​(104): No se puede analizar el valor entero para verdadero en la clave should_sync – Pentium10

Respuesta

23

Eres bastante cerca, en realidad!

if (obj instanceof Integer) 
    put(key,integerval); 
if (obj instanceof String) 
    put(key,stringval); 
if (obj instanceof Boolean) 
    put(key,booleanval); 

Desde el JLS 15.20.2:

RelationalExpressioninstanceofReferenceType

En tiempo de ejecución, el resultado del operador instanceof es true si el valor de la RelationalExpression no es null y el árbitro nce podría ser emitido (§15.16) al ReferenceType sin generar un ClassCastException. De lo contrario, el resultado es false.

En cuanto a su patrón de uso, sin embargo, parece que puede tener problemas más grandes que esto.

+0

¿Qué problemas, no entiendo. – Pentium10

+0

Bueno, como aludió Mark Byers en su comentario, este fragmento simplemente se ve raro. Es difícil de evaluar sin mirar todo el contexto, pero en lo que respecta a su pregunta original, 'instanceof' es lo que quiere. Espero que esta respuesta te ayude. – polygenelubricants

+0

Cuidado: Esto solo funciona si el Objeto es una Cadena o un Entero antes de ser copiado a un Objeto. IE: 'num Obj = "1";' ' ISNUM boolean = num instanceof Integer;' ' retorno ISNUM;' volvería falsa. – tricknology

Cuestiones relacionadas