Javafx 类循环中的构造函数循环不能应用于给定类型

Javafx 类循环中的构造函数循环不能应用于给定类型,javafx,Javafx,我在试用JavaFXCircle库演示,我从一个示例中复制了代码,但它似乎无法编译。我的代码是 import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Circle; import javafx.stage.Stage; public class Circle extends Application {

我在试用JavaFXCircle库演示,我从一个示例中复制了代码,但它似乎无法编译。我的代码是

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class Circle extends Application {

    public void start(Stage stage) {
        stage.setTitle("Circle Demo");
        Circle circle = new Circle(150.0f, 150.0f, 80.f);
        Group group = new Group(circle);
        Scene scene = new Scene(group, 500, 300);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
} 
我得到的错误是

java:11:错误:类Circle中的构造函数Circle不能应用于给定的类型; 圆圈=新圆圈(150.0f、150.0f、80.f)


你的类名有歧义。它与
javafx.scene.shape
包中的
Circle
类同名

所以,
新圆圈(150.0f,150.0f,80.f)
这里指的是当前类,而不是
javafx.scene.shape.Circle

解决此问题的两种方法:

  • 可以使用完全限定的类名。将代码更改为
    newjavafx.scene.shape.Circle(150.0f、150.0f、80.f)将引用所需的程序包
  • 将类的名称更改为其他名称,这不会共享库的类名。与中一样,将类的名称从
    Circle
    更改为
    CircleDemo
    可以解决此问题

  • 建议使用第二种方法,因为类名类似于库类可能会很混乱。

    类名似乎不明确。因为您的类被称为
    Circle
    ,并且您没有定义构造函数,所以Java将生成默认的无参数构造函数。因此,它找不到具有4个参数的构造函数。简单的解决方法是重命名
    Circle
    类或使用完全限定名进行调用:
    javafx.scene.shape.Circle
    不要为自己的类使用现有的类名,尤其是在文件中导入具有相同名称的类时^^