Java - 在构造函数中将对象作为参数传递

Java - pass object as parameter in constructor

我的任务是使用一个 class 的实例作为另一个 class 的参数。我将用一个例子来描述我的问题。

public class Color {

    public String color;
    public Color (String color) {
        this.color = color;
    }
    public Color grey = new Color("grey");
}

我的目标是构建另一个使用我的拳头 class 实例作为参数(例如汽车)的构造函数:

public class car {

    int PS;
    Color color;

    public Auto (int PS, Color color) {
        this.PS = PS;
        this.color = color;
    }

    public static void main (String args[]) {
        car myCar = new car(80, grey);
}

我收到错误 "Java cannot find symbol"。我尝试了很多但都做不到 运行 而且我不完全理解 class 我猜的概念。

您的构造函数名称和您的 class 名称应该相同。 Autocar 不同。只需更改其中一个即可。 grey 也没有定义。我相信您想使用 Color.grey 这意味着将其定义为 static.

public class Color {

    public String color;
    public Color (String color) {
        this.color = color;
    }
    public static Color grey = new Color("grey");
}

public class car {

    int PS;
    Color color;

    public car (int PS, Color color) {
        this.PS = PS;
        this.color = color;
    }

    public static void main (String args[]) {
        car myCar = new car(80, Color.grey);
    }
}

A cannot find symbol 错误通常意味着它是 scope 的问题——也就是说,哪些位在哪里可见。在您的例子中,grey 是在 class Color 上定义的 ,但您正试图从 Car 使用它。如果您正在尝试构建一组可重用的 Color 对象,请制作 grey static finalstatic 表示它属于 整个 class Color 而不是特定的颜色),并将其命名为 GREY 以符合约定。

然后,从您的主要方法中,您仍然看不到 GREY,因为它在另一个范围内。您可以通过调用 Color.GREY.

来告诉 Java 在哪里可以找到它