老项目原来用的JDK1.8,最近换了11和14的JDK来试水,今天翻看老项目,发现一行删除线
Assert.assertEquals(new Integer(1), productCategory.getCategoryId());
点进方法中看
/**
* Constructs a newly allocated {@code Integer} object that
* represents the specified {@code int} value.
*
* @param value the value to be represented by the
* {@code Integer} object.
*
* @deprecated
* It is rarely appropriate to use this constructor. The static factory
* {@link #valueOf(int)} is generally a better choice, as it is
* likely to yield significantly better space and time performance.
*/
@Deprecated(since="9")
public Integer(int value) {
this.value = value;
}
首先看到@Deprecated(since=“9”),显而易见,从JDK9开始Integer这个构造函数就过时了
再看英文
@deprecated
It is rarely appropriate to use this constructor. The static factory
{@link #valueOf(int)} is generally a better choice, as it is
likely to yield significantly better space and time performance.
大概意思是说,这个构造方法来创建Integer对象真的太不合适,让我们用静态方法valueOf(int);
用静态方法来构建对象,能够节省空间,减少代码运行时间。
好吧,又学到了!