HOWTO · Java
Cómo convertir Object a int en Java
Aprenda cuatro formas de obtener un int a partir de un Object en Java: convertir un Integer, usar Number.intValue(), llamar a Integer.intValue() o analizar texto entero.
En esta página
Para obtener un int a partir de un Object en Java, primero identifique el tipo en tiempo de ejecución del valor. Conviértalo y desempaquételo cuando contenga un Integer; use Number.intValue() para otro contenedor numérico; o analice su texto con Integer.parseInt(). Estos enfoques no son intercambiables: una referencia Object por sí sola no promete un valor numérico.
La conversión de tipos es uno de los grupos temáticos del Tutorial de Java, donde las guías de conversión están reunidas en un solo lugar.
Los ejemplos siguientes no se han ejecutado en la evidencia proporcionada; sus valores indicados se derivan de las conversiones de Java mostradas.
Convertir Object a int en Java usando la clase contenedora Integer
Cuando el objeto contiene un Integer, una conversión seguida de una asignación a int comprueba el tipo contenedor y desempaqueta su valor. El método siguiente devuelve el valor 123 para el objeto proporcionado:
public class Main {
public static int objectToInt(Object obj) {
return (Integer) obj;
}
public static void main(String[] args) {
Object obj = Integer.valueOf(123);
int value = objectToInt(obj);
System.out.println("The converted int is " + value);
}
}
La conversión requiere que el valor en tiempo de ejecución sea un Integer; otra clase provoca una ClassCastException. Si obj es null, la conversión produce null y desempaquetarlo a int provoca una NullPointerException. Compruebe el valor o maneje estos casos si la entrada no está garantizada.
Convertir Object a int en Java usando Number y la función intValue()
Use Number cuando el objeto pueda contener diferentes tipos contenedores numéricos, como Integer, Long o Double. El valor en tiempo de ejecución debe seguir siendo un Number. intValue() devuelve un int; para valores fuera del rango de int o con una parte fraccionaria, la conversión puede perder información. En este ejemplo, el valor devuelto es 123:
public class Main {
public static int objectToInt(Object obj) {
return ((Number) obj).intValue();
}
public static void main(String[] args) {
Object obj = Double.valueOf(123.9);
int value = objectToInt(obj);
System.out.println("The converted int is " + value);
}
}
Esto convierte un valor numérico; no analiza una cadena como "123". Un objeto que no sea Number no se puede convertir a Number.
Convertir Object a int en Java usando Integer y la función intValue()
Esta forma es específicamente para un objeto cuyo valor en tiempo de ejecución es Integer. Nombra el paso de desempaquetado explícitamente con intValue(), aunque asignar el Integer convertido directamente a int suele hacer el mismo trabajo automáticamente. El método devuelve 123 para esta entrada:
public class Main {
public static int objectToInt(Object obj) {
return ((Integer) obj).intValue();
}
public static void main(String[] args) {
Object obj = Integer.valueOf(123);
int value = objectToInt(obj);
System.out.println("The converted int is " + value);
}
}
Al igual que con la conversión directa, un tipo en tiempo de ejecución diferente provoca una ClassCastException, y un Integer null provoca una NullPointerException cuando se llama a intValue(). Use la forma más amplia de Number cuando otros tipos contenedores numéricos sean entradas válidas.
Convertir Object a int en Java usando la función Integer.parseInt()
El análisis es para texto que representa un entero decimal. Convierta el objeto a texto con toString() y luego pase esa cadena a Integer.parseInt(). Para la cadena "123", el análisis devuelve el valor int 123:
public class Main {
public static int objectToInt(Object obj) {
return Integer.parseInt(obj.toString());
}
public static void main(String[] args) {
Object obj = "123";
int value = objectToInt(obj);
System.out.println("The converted int is " + value);
}
}
El texto debe ser una representación decimal válida dentro del rango de int; de lo contrario, Integer.parseInt() lanza una NumberFormatException. Esto analiza texto en lugar de convertir un objeto numérico. Un objeto null tampoco puede proporcionar texto a través de toString().
Conclusión
Elija la conversión según lo que el Object contenga realmente: convierta y desempaquete un Integer, use Number.intValue() para otro contenedor numérico o use Integer.parseInt() cuando su texto represente un entero. Cuando se sabe que el objeto contiene un Integer, la conversión directa es el enfoque más sencillo. Valide o maneje el tipo en tiempo de ejecución y la nulidad cuando no estén garantizados.