86 votes

Comment convertir un Integer en int ?

Je travaille sur une application web dans laquelle les données seront transférées entre le client et le serveur.

Je sais déjà que JavaScript int != Java int. Parce que, Java int ne peut pas être nul, n'est-ce pas ? Voici maintenant le problème auquel je suis confronté.

J'ai changé mes variables Java int en Integer.

public void aouEmployee(Employee employee) throws SQLException, ClassNotFoundException
{
   Integer tempID = employee.getId();
   String tname = employee.getName();
   Integer tage = employee.getAge();
   String tdept = employee.getDept();
   PreparedStatement pstmt;
   Class.forName("com.mysql.jdbc.Driver");
   String url ="jdbc:mysql://localhost:3306/general";
   java.sql.Connection con = DriverManager.getConnection(url,"root", "1234");
   System.out.println("URL: " + url);
   System.out.println("Connection: " + con);
   pstmt = (PreparedStatement) con.prepareStatement("REPLACE INTO PERSON SET ID=?, NAME=?, AGE=?, DEPT=?");
   pstmt.setInt(1, tempID);
   pstmt.setString(2, tname);
   pstmt.setInt(3, tage);
   pstmt.setString(4, tdept);
   pstmt.executeUpdate();
 }

Mon problème est ici :

pstmt.setInt(1, tempID);

pstmt.setInt(3, tage);

Je ne peux pas utiliser les variables Integer ici. J'ai essayé avec intgerObject.intValue(); Mais cela rend les choses plus complexes. Avons-nous d'autres des méthodes de conversion ou des techniques de conversion ?

Toute solution serait la bienvenue.

79voto

Carlos Heuberger Points 11804

Comme déjà écrit ailleurs :

  • Pour Java 1.5 et les versions ultérieures, vous n'avez pas besoin de faire (presque) rien, c'est le compilateur qui s'en charge.
  • Pour Java 1.4 et avant, utilisez Integer.intValue() pour convertir un Integer en int.

MAIS, comme vous l'avez écrit, un Integer peut être nul, il est donc judicieux de le vérifier avant d'essayer de le convertir en int (ou risque de recevoir un NullPointerException ).

pstmt.setInt(1, (tempID != null ? tempID : 0));  // Java 1.5 or later

ou

pstmt.setInt(1, (tempID != null ? tempID.intValue() : 0));  // any version, no autoboxing  

* en utilisant une valeur par défaut de zéro, pourrait également ne rien faire, afficher un avertissement ou ...

Je préfère surtout ne pas utiliser la boîte automatique (deuxième ligne d'échantillon) pour que ce que je veux faire soit clair.

13voto

ColinD Points 48573

Puisque vous dites que vous utilisez Java 5, vous pouvez utiliser setInt avec un Integer à cause de l'autounboxing : pstmt.setInt(1, tempID) devrait fonctionner parfaitement. Dans les versions antérieures de Java, vous auriez dû appeler .intValue() vous-même.

L'inverse fonctionne également... en assignant un int à un Integer entraînera automatiquement le int pour être autoboxé en utilisant Integer.valueOf(int) .

9voto

spbfox Points 693

Java convertit Integer en int et inversement automatiquement (à moins que vous ne soyez encore sous Java 1.4).

6voto

Parth mehta Points 420

Un autre moyen simple serait :

Integer i = new Integer("10");

if (i != null)
    int ip = Integer.parseInt(i.toString());

4voto

Jim Tough Points 4623

Peut-être les paramètres du compilateur de votre IDE sont-ils réglés sur le mode Java 1.4, même si vous utilisez un JDK Java 5 ? Sinon, je suis d'accord avec les autres personnes qui ont déjà mentionné l'autoboxing/unboxing.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X