Сценарий 1: простой случай
Если гарантируется, что ваш объект является Integer, это простой способ:
int x = (Integer)yourObject;
Сценарий 2: любой числовой объект
В Java Integer, Long, и BigIntegerт.д. все реализовать Numberинтерфейс , который имеет метод с именем intValue. Любые другие пользовательские типы с числовым аспектом также должны быть реализованы Number(например:) Age implements Number. Так что вы можете:
int x = ((Number)yourObject).intValue();
Сценарий 3: разобрать числовой текст
Когда вы принимаете пользовательский ввод из командной строки (или текстового поля и т. Д.), Вы получаете его как String. В этом случае вы можете использовать Integer.parseInt(String string):
String input = someBuffer.readLine();
int x = Integer.parseInt(input);
Если вы получаете вход , как Objectвы можете использовать (String)input, или, если это может иметь другой текстовый тип, input.toString():
int x = Integer.parseInt(input.toString());
Сценарий 4: хэш идентичности
В Java нет указателей. Однако Objectимеет указатель-подобную реализацию по умолчанию для hashCode(), которая напрямую доступна через System.identityHashCode(Object o). Так что вы можете:
int x = System.identityHashCode(yourObject);
Обратите внимание, что это не реальное значение указателя. Адрес памяти объектов может быть изменен JVM, в то время как их хеши идентичности сохраняются. Кроме того, два живых объекта могут иметь одинаковый хеш-идентификатор.
Вы также можете использовать object.hashCode(), но это может быть конкретным типом.
Сценарий 5: уникальный индекс
В тех же случаях вам нужен уникальный индекс для каждого объекта, например, для автоматического увеличения значений идентификаторов в таблице базы данных (и в отличие от идентификатора, который не является уникальным). Простой пример реализации для этого:
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;
}
}
}
Использование:
ObjectIndexer indexer = new ObjectIndexer();
int x = indexer.indexFor(yourObject); // 1
int y = indexer.indexFor(new Object()); // 2
int z = indexer.indexFor(yourObject); // 1
Сценарий 6: член enum
В Java члены перечисления - не целые числа, а полнофункциональные объекты (в отличие, например, от C / C ++). Вероятно, никогда не требуется преобразовывать объект перечисления int, однако Java автоматически назначает индексный номер каждому члену перечисления. К этому индексу можно получить доступ Enum.ordinal(), например, через:
enum Foo { BAR, BAZ, QUX }
// ...
Object baz = Foo.BAZ;
int index = ((Enum)baz).ordinal(); // 1

Objectэто не такInteger, я не уверен, что вы ожидаете от своего состава.