这个问题在这里已经有了答案:
The constructors Integer(int), Double(double), Long(long) and so on are deprecated
(1 个回答)
create a new Integer object that holds the value 1?
(2 个回答)
去年关闭。
我正在关注 Walter Savitch 的一本名为 Absolute Java 的书。其中的示例程序包含以下几行:
Double[] d = new Double[10];
for (int i = 0; i < d.length; i++)
d[i] = new Double(d.length - i);
我收到以下警告消息:
warning: [deprecation] Double(double) in Double has been deprecated
我相信警告消息告诉我替换构造函数的使用,因为它已经被弃用了,那么我应该用什么替换它?
最佳答案
解释
您应该将其替换为:
d[i] = Double.valueOf(d.length - i);
来自其 Javadoc :
Deprecated.
It is rarely appropriate to use this constructor. The static factory
valueOf(double)
is generally a better choice, as it is likely to yield significantly better space and time performance.
一般来说,
valueOf
不是被迫总是返回 新品 实例。它可以利用内部缓存并重用之前创建的值,从而使其速度更快。例如,如果您创建数百个 1.0
.笔记
您使用
Double[]
是否有特定原因?首先?如果没有,请拨打 double[]
反而。与它们的对象包装器相比,原语要快得多,内存开销也更少。那么你的代码就是:
double[] d = new double[10];
for (int i = 0; i < d.length; i++)
d[i] = d.length - i;
顺便说一句,你应该宁愿永远不要省略花括号。即使您的循环只是一行。这是很难找到的错误的一个非常常见的来源。
另外,您的变量命名不是很好。什么是
d
?试着给它起一个能反射(reflect)它实际含义的名字。赞 ages
例如,如果它存储人的年龄。如果您没有特定的东西,可以使用 values
.这已经比仅仅 d
更好了.特别是因为它是复数,所以很明显它是一个多值的数组。double[] values = new double[10];
for (int i = 0; i < values.length; i++) {
values[i] = values.length - i;
}
关于java - 已弃用的新 Double(double) 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60024551/