java - 预建的 java 类会更新吗?
问题描述
我打开了一个使用 DecimalFormat 类的项目。我记得项目编译正确,这就是我使用 DecimalFormat 类的方式:
import java.text.DecimalFormat;
import java.util.Scanner;
public class Receipt {
public static void main(String[] args) {
float price = 0;
Scanner scanner = new Scanner(System.in);
DecimalFormat df = new DecimalFormat("0.00");
System.out.println("please enter a price");
price = scanner.nextFloat();
System.out.println(df.format(price);
}
}
这工作正常,但现在我收到以下错误
The method format(Object, StringBuffer, FieldPosition) in the type DecimalFormat is not applicable for the arguments (float)
过去 format 方法只包含一个参数,但现在它包含 3 个参数。
这可能是包更新并更改旧方法/参数的情况吗?
解决方案
预建的 java 类会更新吗?
是的。他们是这样。
但是,Oracle 竭尽全力避免破坏向后兼容性。如果不首先弃用它,他们不会删除(公共)方法。在这种情况下,他们没有这样做。
该类DecimalFormat
从未有过format
带有一个float
参数的方法。您可以通过查看当前和旧版本 Java 的 javadocs 来确认这一点。(例如Java 7。)
但是,有一个format
方法需要一个double
参数......在超类中声明NumberFormat
。
更新- 我无法使用javac
命令提示符(Java 8 或 Java 16)重现您的问题。我怀疑您的实际问题是您的 IDE 被“混淆”了。
推荐阅读
- google-chrome - chrome.cookies.set 不在隐身窗口中创建 cookie
- pointers - 要在 for 循环中使用 goroutine,为什么迭代指向结构而不是结构本身的指针有效
- javascript - 如何在 ES6 中将对象映射到数组?
- r - 过滤分组变量
- php - CRC_CCITT 校验和 PHP
- angular - http://localhost:4200' 已被 CORS 策略阻止:对预检请求的响应未通过
- bash - 如何使用镜像名称访问 Docker 容器实例?
- ios - 擦除使用 pdfkit 添加的 pdfAnnotation
- android - 在 android studio 上反应原生
- parallel-processing - AWS Step Function 与 Lambda