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

时间:2017-03-22 20:00:44

标签: java parameters constructor cannot-find-symbol

我的gaol是使用类的实例作为另一个类的参数。我将以一个例子来描述我的问题。

public class Color {

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

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

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找不到符号”。我尝试了很多,但无法让它运行,我不完全理解我猜的类的概念。

2 个答案:

答案 0 :(得分:2)

您的构造函数名称和类名应该相同。 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);
    }
}

答案 1 :(得分:0)

cannot find symbol错误通常意味着范围存在问题 - 也就是说,哪些位在哪里可见。在您的情况下,grey已在类Color 上定义,但您尝试在Car中使用它。如果您尝试构建一组可重复使用的Color对象,请grey static finalstatic表示它属于整个班级{{1} 而不是特定的颜色),并将其命名为Color以符合惯例。

然后,从您的main方法中,您仍然看不到GREY,因为它在另一个范围内。您可以通过调用GREY来告诉Java在何处找到它。