Как преобразовать Integer в int?

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

Я уже знаю, что 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 (); Но это усложняет ситуацию. Есть ли у нас какие-либо другие методы преобразования или методы преобразования?

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

71
задан ROMANIA_engineer 25 November 2014 в 20:05
поделиться

3 ответа

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

  • Для 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  

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

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

69
ответ дан 24 November 2019 в 13:06
поделиться

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

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

13
ответ дан 24 November 2019 в 13:06
поделиться

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

4
ответ дан 24 November 2019 в 13:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: