Szenario 1: einfacher Fall
Wenn garantiert ist, dass Ihr Objekt ein Objekt ist Integer, ist dies der einfache Weg:
int x = (Integer)yourObject;
Szenario 2: ein beliebiges numerisches Objekt
In Java Integer, Long, BigIntegerimplementieren usw. alle NumberSchnittstelle , die eine Methode mit dem Namen hat intValue. Alle anderen benutzerdefinierten Typen mit einem numerischen Aspekt sollten ebenfalls implementiert werden Number(zum Beispiel :) Age implements Number. Also kannst du:
int x = ((Number)yourObject).intValue();
Szenario 3: Analysieren Sie numerischen Text
Wenn Sie Benutzereingaben über die Befehlszeile (oder ein Textfeld usw.) akzeptieren, erhalten Sie diese als String. In diesem Fall können Sie verwenden Integer.parseInt(String string):
String input = someBuffer.readLine();
int x = Integer.parseInt(input);
Wenn Sie eine Eingabe als erhalten Object, können Sie Folgendes verwenden (String)inputoder, wenn es einen anderen Texttyp haben kann input.toString():
int x = Integer.parseInt(input.toString());
Szenario 4: Identitäts-Hash
In Java gibt es keine Zeiger. Hat Objectjedoch eine zeigerähnliche Standardimplementierung für hashCode(), die direkt über verfügbar ist System.identityHashCode(Object o). Also kannst du:
int x = System.identityHashCode(yourObject);
Beachten Sie, dass dies kein echter Zeigerwert ist. Die Speicheradresse von Objekten kann von der JVM geändert werden, während ihre Identitäts-Hashes beibehalten werden. Außerdem können zwei lebende Objekte denselben Identitäts-Hash haben.
Sie können auch verwenden object.hashCode(), es kann jedoch typspezifisch sein.
Szenario 5: eindeutiger Index
In den gleichen Fällen benötigen Sie einen eindeutigen Index für jedes Objekt, z. B. um automatisch inkrementierte ID-Werte in einer Datenbanktabelle (und im Gegensatz zu Identitäts-Hashs, die nicht eindeutig sind). Eine einfache Beispielimplementierung hierfür:
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;
}
}
}
Verwendung:
ObjectIndexer indexer = new ObjectIndexer();
int x = indexer.indexFor(yourObject); // 1
int y = indexer.indexFor(new Object()); // 2
int z = indexer.indexFor(yourObject); // 1
Szenario 6: Mitglied auflisten
In Java sind Enum-Mitglieder keine Ganzzahlen, sondern Objekte mit vollem Funktionsumfang (im Gegensatz zu beispielsweise C / C ++). Wahrscheinlich ist es nie erforderlich, ein Enum-Objekt in zu konvertieren. intJava ordnet jedoch jedem Enum-Mitglied automatisch eine Indexnummer zu. Auf diesen Index kann beispielsweise zugegriffen werden über Enum.ordinal():
enum Foo { BAR, BAZ, QUX }
// ...
Object baz = Foo.BAZ;
int index = ((Enum)baz).ordinal(); // 1

Objectnicht der Fall istInteger, bin ich mir nicht sicher, was Sie von Ihrer Besetzung erwarten.