Comment convertir un object en int

Comment puis-je convertir un object en int en Java?

Si vous êtes sûr que cet object est un Integer :

 int i = (Integer) object; 

Ou, à partir de Java 7, vous pouvez écrire de manière équivalente:

 int i = (int) object; 

Attention, il peut lancer une ClassCastException si votre object n’est pas un Integer et une NullPointerException si votre object est null .

De cette façon, vous supposez que votre object est un entier (l’intégré int) et que vous le désarchivez dans un int.

int est une primitive, elle ne peut donc pas être stockée en tant Object , la seule manière est d’avoir un int considéré / encadré comme un Integer puis stocké en tant Object .


Si votre object est une Ssortingng , vous pouvez utiliser la méthode Integer.valueOf() pour la convertir en un simple int:

 int i = Integer.valueOf((Ssortingng) object); 

Il peut lancer une NumberFormatException si votre object n’est pas vraiment une Ssortingng avec un entier comme contenu.


Ressources :

  • Oracle.com – Autoboxing
  • Oracle.com – Types de données primitifs

Sur le même sujet:

  • Java: Quelle est la différence entre l’autoboxing et le casting?
  • Autoboxing: Je peux donc écrire: Integer i = 0; au lieu de: Integer i = new Entier (0);
  • Convertir un object en int primitif

En supposant que l’object est un object Integer , vous pouvez le faire:

 int i = ((entier) obj) .intValue ();

Si l’object n’est pas un object Integer , vous devez alors détecter le type et le convertir en fonction de son type.

Scénario 1: cas simple

S’il est garanti que votre object est un Integer , c’est simple:

 int x = (Integer)yourObject; 

Scénario 2: n’importe quel object numérique

Dans Java Integer , Long , BigInteger etc., tous implémentent l’interface Number qui a une méthode appelée intValue . Tout autre type personnalisé avec un aspect numérique doit également implémenter Number (par exemple: Age implements Number ). Afin que vous puissiez:

 int x = ((Number)yourObject).intValue(); 

Scénario 3: parsingr le texte numérique

Lorsque vous acceptez une entrée utilisateur de la ligne de commande (ou du champ de texte, etc.), vous l’obtenez en tant que Ssortingng . Dans ce cas, vous pouvez utiliser Integer.parseInt(Ssortingng ssortingng) :

 Ssortingng input = someBuffer.readLine(); int x = Integer.parseInt(input); 

Si vous entrez en tant Object , vous pouvez utiliser l’ (Ssortingng)input ou, si elle peut avoir un autre type textuel, input.toSsortingng() :

 int x = Integer.parseInt(input.toSsortingng()); 

Scénario 4: hachage d’identité

En Java, il n’y a pas de pointeurs. Cependant, Object a une implémentation par défaut de type pointeur pour hashCode() , qui est directement disponible via System.identityHashCode(Object o) . Afin que vous puissiez:

 int x = System.identityHashCode(yourObject); 

Notez que ce n’est pas une vraie valeur de pointeur. L’adresse mémoire des objects peut être modifiée par la machine virtuelle Java tout en conservant leur identité. En outre, deux objects vivants peuvent avoir le même hachage d’identité.

Vous pouvez également utiliser object.hashCode() , mais il peut être spécifique au type.

Scénario 5: index unique

Dans les mêmes cas, vous avez besoin d’un index unique pour chaque object, par exemple pour incrémenter automatiquement les valeurs d’ID dans une table de firebase database (et contrairement au hachage d’identité qui n’est pas unique). Un exemple simple d’implémentation pour cela:

 class ObjectIndexer { private int index = 0; private Map map = new WeakHashMap<>(); public int indexFor(Object object) { if (map.containsKey(object)) { return map.get(object); } else { index++; map.put(object, index); return index; } } } 

Usage:

 ObjectIndexer indexer = new ObjectIndexer(); int x = indexer.indexFor(yourObject); // 1 int y = indexer.indexFor(new Object()); // 2 int z = indexer.indexFor(yourObject); // 1 

Scénario 6: membre enum

En Java, les membres enum ne sont pas des entiers mais des objects complets (contrairement au C / C ++, par exemple). Il n’est probablement jamais nécessaire de convertir un object enum en int , mais Java associe automatiquement un numéro d’index à chaque membre d’énumération. Cet index est accessible via Enum.ordinal() , par exemple:

 enum Foo { BAR, BAZ, QUX } // ... Object baz = Foo.BAZ; int index = ((Enum)baz).ordinal(); // 1 

entrer la description de l'image ici

 @Deprecated public static int toInt(Object obj) { if (obj instanceof Ssortingng) { return Integer.parseInt((Ssortingng) obj); } else if (obj instanceof Number) { return ((Number) obj).intValue(); } else { Ssortingng toSsortingng = obj.toSsortingng(); if (toSsortingng.matches("-?\d+")) { return Integer.parseInt(toSsortingng); } throw new IllegalArgumentException("This Object doesn't represent an int"); } } 

Comme vous pouvez le constater, ce n’est pas une manière très efficace de le faire. Vous devez simplement être sûr de quel type d’object vous avez. Ensuite, convertissez-le en int dans le bon sens.

Vous devez le convertir en un entier (classe wrapper int). Vous pouvez ensuite utiliser la méthode intValue () d’Integer pour obtenir le int interne.

Répondre:

 int i = ( Integer ) yourObject; 

Si votre object est déjà un entier, il fonctionnera correctement. c’est à dire:

 Object yourObject = 1; // cast here 

ou

 Object yourObject = new Integer(1); // cast here 

etc.

Si votre object est autre chose, vous devrez le convertir (si possible) en un int d’abord:

 Ssortingng s = "1"; Object yourObject = Integer.parseInt(s); // cast here 

Ou

 Ssortingng s = "1"; Object yourObject = Integer.valueOf( s ); // cast here 

J’utilise un one-liner lors du traitement des données à partir de GSON:

 int i = object != null ? Double.valueOf(object.toSsortingng()).intValue() : 0; 

Si l’ Object a été instancié à l’origine sous forme d’ Integer , vous pouvez le réduire à un int à l’aide de l’opérateur cast (Subtype) .

 Object object = new Integer(10); int i = (Integer) object; 

Notez que cela ne fonctionne que lorsque vous utilisez au moins Java 1.5 avec la fonctionnalité de création automatique de paquets , sinon vous devez déclarer i comme Integer place, puis appeler intValue() .

Mais si cela n’a pas été créé initialement en tant Integer , alors vous ne pouvez pas baisser les arm comme ça. Il en résulterait une ClassCastException avec le nom de classe d’origine dans le message. Si la représentation toSsortingng() l’object obtenue par Ssortingng#valueOf() indique un nombre entier syntaxiquement valide (par exemple, uniquement des chiffres, si nécessaire avec un signe moins), vous pouvez utiliser Integer#valueOf() ou new Integer() pour ça.

 Object object = "10"; int i = Integer.valueOf(Ssortingng.valueOf(object)); 

Voir également:

  • Tutoriel Héritage et casting
 int i = (Integer) object; //Type is Integer. int i = Integer.parseInt((Ssortingng)object); //Type is Ssortingng. 

Ne peut pas être fait Un int n’est pas un object, c’est un type primitif. Vous pouvez le convertir en Integer, puis obtenir le int.

  Integer i = (Integer) o; // throws ClassCastException if o.getClass() != Integer.class int num = i; //Java 1.5 or higher 

Vous ne pouvez pas Un int n’est pas un Object .

Integer est un Object cependant, mais je doute que ce que vous voulez dire.

Si vous voulez dire lancer une chaîne dans int, utilisez Integer.valueOf("123") .

Vous ne pouvez pas convertir la plupart des autres objects en int, car ils n’auront pas de valeur int. Par exemple, XmlDocument n’a pas de valeur int.

Je suppose que vous vous demandez pourquoi C ou C ++ vous permet de manipuler un pointeur d’object comme un nombre, mais vous ne pouvez pas manipuler une référence d’object en Java de la même manière.

Les références d’objects en Java ne sont pas comme des pointeurs en C ou C ++ … Les pointeurs sont des entiers et vous pouvez les manipuler comme n’importe quel autre int. Les références sont intentionnellement une abstraction plus concrète et ne peuvent pas être manipulées comme le font les pointeurs.

 int[] getAdminIDList(Ssortingng tableName, Ssortingng atsortingbuteName, int value) throws SQLException { ArrayList list = null; Statement statement = conn.createStatement(); ResultSet result = statement.executeQuery("SELECT admin_id FROM " + tableName + " WHERE " + atsortingbuteName + "='" + value + "'"); while (result.next()) { list.add(result.getInt(1)); } statement.close(); int id[] = new int[list.size()]; for (int i = 0; i < id.length; i++) { try { id[i] = ((Integer) list.get(i)).intValue(); } catch(NullPointerException ne) { } catch(ClassCastException ch) {} } return id; } // enter code here 

Ce code montre pourquoi ArrayList est important et pourquoi nous l'utilisons. Il suffit de lancer int depuis Object . Peut être utile.

Référer ce code:

 public class sample { public static void main(Ssortingng[] args) { Object obj=new Object(); int a=10,b=0; obj=a; b=(int)obj; System.out.println("Object="+obj+"\nB="+b); } } 

Pour la variable d’object Example; hastaId

 Object hastaId = session.getAtsortingbute("hastaID"); 

Par exemple Faire un object dans un int, hastaID

 int hastaID=Integer.parseInt(Ssortingng.valueOf(hastaId)); 

vérifiez d’abord avec le mot-clé instanceof. si c’est vrai, lancez-le.