Как преобразовать Integer в int?
Я работаю над веб-приложением, в котором данные будут передаваться между клиентской и серверной сторонами.
Я уже знаю, что JavaScript int!= Java int. Потому что Java int не может быть null, правильно.
Теперь это проблема, с которой я сталкиваюсь.
Я изменил свои внутренние переменные Java на 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);
Я не могу использовать переменные Integer здесь. Я пробовал с помощью intgerObject.intValue();
Но это усложняет ситуацию. Есть ли у нас какие-либо другие методы преобразования или методы преобразования?
Любое исправление будет лучше.
Ответы
Ответ 1
Как уже написано в другом месте:
- Для 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
* используя значение по умолчанию нуля, также ничего не может сделать, показать предупреждение или...
В основном я предпочитаю не использовать autoboxing (вторая строка выборки), поэтому ясны, что я хочу делать.
Ответ 2
Поскольку вы говорите, что используете Java 5, вы можете использовать setInt
с Integer
из-за autounbing: pstmt.setInt(1, tempID)
должно работать нормально. В более ранних версиях Java вам пришлось бы вызывать .intValue()
самостоятельно.
Противоположно также... присваивание int
Integer
автоматически приведет к отключению int
с помощью Integer.valueOf(int)
.
Ответ 3
Java преобразует Integer в int и обратно автоматически (если вы еще не используете Java 1.4).
Ответ 4
Возможно, у вас есть параметры компилятора для вашей среды IDE, установленной в режиме Java 1.4, даже если вы используете Java 5 JDK? В противном случае я согласен с другими людьми, которые уже упомянули автобоксинг/распаковку.
Ответ 5
Еще один простой способ:
Integer i = new Integer("10");
if (i != null)
int ip = Integer.parseInt(i.toString());