首页 > 解决方案 > 预建的 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

解决方案


预建的 java 类会更新吗?

是的。他们是这样。

但是,Oracle 竭尽全力避免破坏向后兼容性。如果不首先弃用它,他们不会删除(公共)方法。在这种情况下,他们没有这样做。

该类DecimalFormat从未有过format带有一个float参数的方法。您可以通过查看当前和旧版本 Java 的 javadocs 来确认这一点。(例如Java 7。)

但是,有一个format方法需要一个double参数......在超类中声明NumberFormat


更新- 我无法使用javac命令提示符(Java 8 或 Java 16)重现您的问题。我怀疑您的实际问题是您的 IDE 被“混淆”了。


推荐阅读