Comment puis-je lancer un objet sur un int en java?
Si vous êtes sûr que cet objet 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 générer un ClassCastException
si votre objet n'est pas un Integer
et un NullPointerException
si votre objet est null
.
De cette façon, vous supposez que votre objet est un entier (l'entier encapsulé) et vous le décompressez en un entier.
int
est une primitive et ne peut donc pas être stocké en tant que Object
; le seul moyen consiste à avoir un int
considéré/encadré en tant que Integer
puis stocké en tant que Object
.
Si votre objet est un String
, vous pouvez utiliser la méthode Integer.valueOf()
pour le convertir en un simple int:
int i = Integer.valueOf((String) object);
Il peut renvoyer un NumberFormatException
si votre objet n'est pas vraiment un String
avec un entier comme contenu.
Ressources :
Sur le même sujet:
En supposant que l'objet est un objet Integer
, vous pouvez alors procéder comme suit:
int i = ((entier) obj) .intValue ();
Si l'objet n'est pas un objet Integer
, vous devez détecter le type et le convertir en fonction de son type.
S'il est garanti que votre objet est une Integer
, procédez comme suit:
int x = (Integer)yourObject;
En Java, Integer
, Long
, BigInteger
etc. implémentent tous l'interface Number
qui utilise une méthode nommée intValue
. Tous les autres types personnalisés avec un aspect numérique doivent également implémenter Number
(par exemple: Age implements Number
). Afin que vous puissiez:
int x = ((Number)yourObject).intValue();
Lorsque vous acceptez la saisie de l'utilisateur à partir de la ligne de commande (ou du champ de texte, etc.), vous l'obtenez sous la forme d'une String
. Dans ce cas, vous pouvez utiliser Integer.parseInt(String string)
:
String input = someBuffer.readLine();
int x = Integer.parseInt(input);
Si vous avez entré Object
, vous pouvez utiliser (String)input
ou, s'il peut avoir un autre type de texte, input.toString()
:
int x = Integer.parseInt(input.toString());
En Java, il n'y a pas de pointeur. Cependant, Object
a une implémentation par défaut semblable à celle du pointeur pour hashCode()
, qui est directement disponible via System.identityHashCode(Object o)
. Afin que vous puissiez:
int x = System.identityHashCode(yourObject);
Notez que ceci est pas une vraie valeur de pointeur. L'adresse mémoire des objets peut être modifiée par la machine virtuelle Java pendant que leurs hachages d'identité sont conservés. En outre, deux objets vivants peuvent avoir la même empreinte numérique.
Vous pouvez également utiliser object.hashCode()
, mais il peut s'agir d'un type spécifique.
Dans les mêmes cas, vous avez besoin d'un index unique pour chaque objet, comme pour l'auto incrémentation automatique des valeurs d'ID dans une table de base de données (et contrairement au hachage d'identité qui n'est pas unique). Un exemple d'implémentation simple pour cela:
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;
}
}
}
Usage:
ObjectIndexer indexer = new ObjectIndexer();
int x = indexer.indexFor(yourObject); // 1
int y = indexer.indexFor(new Object()); // 2
int z = indexer.indexFor(yourObject); // 1
En Java, les membres ne sont pas des entiers mais des objets complets (contrairement à C/C++, par exemple). Il n’est probablement jamais nécessaire de convertir un objet enum en int
, mais Java associe automatiquement un numéro d’index à chaque membre enum. Cet index est accessible via Enum.ordinal()
, par exemple:
enum Foo { BAR, BAZ, QUX }
// ...
Object baz = Foo.BAZ;
int index = ((Enum)baz).ordinal(); // 1
@Deprecated
public static int toInt(Object obj)
{
if (obj instanceof String)
{
return Integer.parseInt((String) obj);
} else if (obj instanceof Number)
{
return ((Number) obj).intValue();
} else
{
String toString = obj.toString();
if (toString.matches("-?\d+"))
{
return Integer.parseInt(toString);
}
throw new IllegalArgumentException("This Object doesn't represent an int");
}
}
Comme vous pouvez le constater, ce n’est pas un moyen très efficace de le faire. Vous devez simplement être sûr de quel type d'objet vous avez. Puis convertissez-le en int de la bonne manière.
Vous devez le convertir en Integer (classe de wrapper de int). Vous pouvez ensuite utiliser la méthode intValue () d'Integer pour obtenir l'int.
Réponse:
int i = ( Integer ) yourObject;
Si votre objet est déjà un entier, il fonctionnera sans à-coups. c'est à dire:
Object yourObject = 1;
// cast here
ou
Object yourObject = new Integer(1);
// cast here
etc.
Si votre objet est autre chose, vous devez d'abord le convertir (si possible) en int:
String s = "1";
Object yourObject = Integer.parseInt(s);
// cast here
Ou
String s = "1";
Object yourObject = Integer.valueOf( s );
// cast here
J'utilise un one-liner lors du traitement des données de GSON:
int i = object != null ? Double.valueOf(object.toString()).intValue() : 0;
int i = (Integer) object; //Type is Integer.
int i = Integer.parseInt((String)object); //Type is String.
Tu ne peux pas. Une int
n'est pas une Object
.
Integer
est un Object
cependant, mais je doute que ce soit ce que vous voulez dire.
Ne peut pas être fait. Un int
n'est pas un objet, c'est un type primitif. Vous pouvez le lancer sur Integer, puis obtenir l'int.
Integer i = (Integer) o; // throws ClassCastException if o.getClass() != Integer.class
int num = i; //Java 1.5 or higher
Si le Object
a été instancié à l'origine sous la forme d'un Integer
, vous pouvez le convertir en int
à l'aide de l'opérateur de conversion (Subtype)
.
Object object = new Integer(10);
int i = (Integer) object;
Notez que cela ne fonctionne que si vous utilisez au moins Java 1.5 avec autoboxing feature , sinon vous devez déclarer i
comme Integer
à la place, puis appeler intValue()
dessus.
Mais si, au départ, il n’a pas été créé comme une variable Integer
, vous ne pouvez pas le faire de cette façon. Il en résulterait une ClassCastException
avec le nom de classe d'origine dans le message. Si la représentation toString()
de l'objet obtenue par String#valueOf()
désigne un nombre entier syntaxiquement valide (par exemple, chiffres uniquement, avec si nécessaire un signe moins devant), vous pouvez utiliser Integer#valueOf()
ou new Integer()
pour cela.
Object object = "10";
int i = Integer.valueOf(String.valueOf(object));
Vous vous demandez peut-être pourquoi C ou C++ vous permet de manipuler un pointeur d'objet comme un nombre, mais vous ne pouvez pas manipuler une référence d'objet en Java de la même manière.
Les références d'objet en Java ne ressemblent pas aux pointeurs en C ou C++ ... Les pointeurs en gros sont 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(String tableName, String attributeName, int value) throws SQLException {
ArrayList list = null;
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery("SELECT admin_id FROM " + tableName + " WHERE " + attributeName + "='" + 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. Convertir simplement int
à partir de Object
. Peut-être sa utile.
Si vous voulez dire transtyper une chaîne en int, utilisez Integer.valueOf("123")
.
Cependant, vous ne pouvez pas convertir la plupart des autres objets en int, car ils n'auront pas de valeur int. Par exemple. un XmlDocument n'a pas de valeur int.
Par exemple, variable d'objet; hastaId
Object hastaId = session.getAttribute("hastaID");
Par exemple, convertit un objet en int, hastaID
int hastaID=Integer.parseInt(String.valueOf(hastaId));
map.getValue () renvoie le type d'objetso divide1 = me.getValue ()/2;
int divide1 = (Integer) me.getValue ()/2;
Référez-vous ce code:
public class sample
{
public static void main(String[] args)
{
Object obj=new Object();
int a=10,b=0;
obj=a;
b=(int)obj;
System.out.println("Object="+obj+"\nB="+b);
}
}