Escenario 1: caso simple
Si se garantiza que su objeto es un Integer
, esta es la manera simple:
int x = (Integer)yourObject;
Escenario 2: cualquier objeto numérico
En Java Integer
, etc. Long
, BigInteger
todos implementan la Number
interfaz que tiene un método llamado intValue
. También debe implementarse cualquier otro tipo personalizado con un aspecto numérico Number
(por ejemplo:) Age implements Number
. Así que puedes:
int x = ((Number)yourObject).intValue();
Escenario 3: analizar texto numérico
Cuando acepta la entrada del usuario desde la línea de comando (o campo de texto, etc.), la obtiene como a String
. En este caso puedes usar Integer.parseInt(String string)
:
String input = someBuffer.readLine();
int x = Integer.parseInt(input);
Si usted recibe como entrada Object
, se puede utilizar (String)input
, o, si se puede tener un otro tipo textual, input.toString()
:
int x = Integer.parseInt(input.toString());
Escenario 4: hash de identidad
En Java no hay punteros. Sin embargo, Object
tiene una implementación predeterminada similar a un puntero para hashCode()
, que está directamente disponible a través de System.identityHashCode(Object o)
. Así que puedes:
int x = System.identityHashCode(yourObject);
Tenga en cuenta que esto no es un valor de puntero real. La dirección de memoria de los objetos puede ser cambiada por la JVM mientras se mantienen sus hashes de identidad. Además, dos objetos vivos pueden tener el mismo hash de identidad.
También puedes usar object.hashCode()
, pero puede ser específico del tipo.
Escenario 5: índice único
En los mismos casos, necesita un índice único para cada objeto, como aumentar automáticamente los valores de ID en una tabla de base de datos (y a diferencia del hash de identidad que no es único). Una implementación de muestra simple para esto:
class ObjectIndexer {
private int index = 0;
private Map<Object, Integer> map = new WeakHashMap<>();
public int indexFor(Object object) {
if (map.containsKey(object)) {
return map.get(object);
} else {
index++;
map.put(object, index);
return index;
}
}
}
Uso:
ObjectIndexer indexer = new ObjectIndexer();
int x = indexer.indexFor(yourObject); // 1
int y = indexer.indexFor(new Object()); // 2
int z = indexer.indexFor(yourObject); // 1
Escenario 6: miembro enum
En Java, los miembros de enumeración no son enteros, sino objetos con todas las funciones (a diferencia de C / C ++, por ejemplo). Probablemente nunca sea necesario convertir un objeto enum int
, sin embargo, Java asocia automáticamente un número de índice a cada miembro enum. Se puede acceder a este índice a través de Enum.ordinal()
, por ejemplo:
enum Foo { BAR, BAZ, QUX }
// ...
Object baz = Foo.BAZ;
int index = ((Enum)baz).ordinal(); // 1
Object
no es unInteger
, no estoy seguro de lo que esperas de tu elenco.