web-dev-qa-db-fra.com

Comment convertir 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, d'accord. C'est 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 méthodes de conversion ou techniques de conversion?

Toute solution serait meilleure.

71
user405398

Comme déjà écrit ailleurs:

  • Pour Java 1.5 et les versions ultérieures, vous n’avez rien à faire (presque), c’est fait par le compilateur.
  • Pour Java 1.4 et les versions antérieures, utilisez Integer.intValue() pour convertir d’Integer en int.

MAIS comme vous l'avez écrit, un Integer peut être nul, il est donc sage de le vérifier avant d'essayer de convertir en int (sinon vous risquez d'obtenir 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  

* avec un défaut de zéro, pourrait aussi ne rien faire, afficher un avertissement ou ...

Je préfère surtout ne pas utiliser la sélection automatique (deuxième ligne d'échantillon), donc ce que je veux faire est clair.

69
Carlos Heuberger

Puisque vous dites que vous utilisez Java 5, vous pouvez utiliser setInt avec un Integer en raison de la boîte automatique: pstmt.setInt(1, tempID) devrait fonctionner uniquement Dans les versions précédentes de Java, vous auriez dû appeler vous-même .intValue().

Le contraire fonctionne également ... assigner un int à un Integer fera automatiquement passer le int à l'aide de Integer.valueOf(int).

13
ColinD

Java convertit Integer en int et en arrière automatiquement (sauf si vous êtes toujours avec Java 1.4).

8
spbfox

Un autre moyen simple serait:

Integer i = new Integer("10");

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

Peut-être avez-vous les paramètres du compilateur pour votre mode IDE défini sur Java 1.4 même si vous utilisez un Java 5 JDK Sinon, je suis d’accord avec les autres personnes qui ont déjà parlé de l’autoboxing/unboxing.

4
Jim Tough