java - 已弃用的新 Double(double) 的替代方案

标签 java wrapper deprecated

这个问题在这里已经有了答案:





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/

相关文章:

java - 替换已弃用的 Java 方法

c# - 系统.AccessViolationException :Attempted to read or write protected memory

WiX 工具集 EXE 包装安装程序,无文件

javascript - 如何消除网页中的 writestringtomemory 警告?

java - 无法理解的 JUnit 错误

c# - Unity iOS - 无法从 .Bundle 导入函数

html - XFBML 是否被弃用?

java - 使用 AssetManager.list 列出子目录中的 Assets

java - 为什么我需要显式地进行通用调用?

java - 如何获取非最终ArrayList的元素?