Как конвертировать Integer в int? - PullRequest
71 голосов
/ 26 августа 2010

Я работаю над веб-приложением, в котором данные будут передаваться между клиентом и сервером.

Я уже знаю, что JavaScript int! = Java int.Потому что Java int не может быть нулевым, верно.Теперь с этой проблемой я сталкиваюсь.

Я изменил свои переменные Java int в 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();
 }

Моя проблема здесь:

pstmt.setInt(1, tempID);

pstmt.setInt(3, tage);

Я не могу использовать здесь целочисленные переменные.Я пробовал с intgerObject.intValue(); Но это усложняет ситуацию.Есть ли у нас другие методы преобразования или методы преобразования?

Любое исправление было бы лучше.

Ответы [ 5 ]

68 голосов
/ 26 августа 2010

Как уже написано в другом месте:

  • Для Java 1.5 и более поздних вам не нужно ничего делать (почти), это делает компилятор.
  • Для Java 1.4 и более ранних версий используйте Integer.intValue() для преобразования из Integer в int.

НО, как вы написали, Integer может быть нулевым, поэтому имеет смысл проверить это, прежде чем пытаться преобразовать в int (или рискуете получить NullPointerException).

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

или

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

* с использованием значения по умолчанию, равного нулю, также может ничего не делать, отображать предупреждение или ...

В основном я предпочитаю не использовать автобокс (вторая строка примера), поэтому понятно, что я хочу сделать.

13 голосов
/ 26 августа 2010

Поскольку вы говорите, что используете Java 5, вы можете использовать setInt с Integer из-за автоматической коробки: pstmt.setInt(1, tempID) должно работать нормально. В более ранних версиях Java вам пришлось бы самостоятельно вызывать .intValue().

Обратное также работает ... назначение int на Integer автоматически приведет к автоматической упаковке int с использованием Integer.valueOf(int).

8 голосов
/ 26 августа 2010

Java автоматически конвертирует Integer в int и обратно (если вы не используете Java 1.4).

4 голосов
/ 08 сентября 2016

Другой простой способ будет:

Integer i = new Integer("10");

if (i != null)
    int ip = Integer.parseInt(i.toString());
4 голосов
/ 26 августа 2010

Возможно, у вас есть настройки компилятора для вашей IDE в режиме Java 1.4, даже если вы используете Java 5 JDK?В противном случае я согласен с другими людьми, которые уже упоминали автобокс / распаковку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...