Пожалуй, большинство людей хотя бы раз в жизни использовало конструктор new Integer(int)
. Это могло случиться либо по незнанию, либо по той причине, что до Java 1.5 это было единственным способом оборачивания int
в Integer
. Однако, начиная с Java 1.5, этот вызов стал в большинстве случаев необязательным, и вместо него рекомендованным и более эффективным способом обёртки стали метод Integer.valueOf()
и автобоксинг:
intList.add(new Integer(5)); // Bad intList.remove(new Integer(6)); // Bad intList.add(5); // Good intList.remove(Integer.valueOf(6)); // Good
Однако до недавнего времени такая рекомендация никак не подкреплялась компилятором. И, наконец, в Java 9 конструкторы Integer
пометили аннотацией @Deprecated
, а также конструкторы всех остальных обёрнутых примитивных типов: Long
, Float
, Double
, Boolean
, Byte
, Short
, Character
. В список deprecated конструкторов также вошли конструкторы, принимающие String
: вместо них рекомендуется использовать методы valueOf(String)
или parseInt()
/ parseLong()
и т.д.