关于Java:Java – 在构造函数中将对象作为参数传递

Java - pass object as parameter in constructor

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
public class Color {

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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找不到符号"。我试了很多次,但不能让它运行,我不完全理解我猜的类的概念。


构造函数名和类名应该相同。Autocar不同。换一个就行了。也没有定义grey。我相信你想使用Color.grey,也就是说定义为static

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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);
    }
}


cannot find symbol错误通常意味着它与作用域有关——也就是说,在哪里可以看到位。在您的例子中,grey是在类Color上定义的,但是您试图从car使用它。如果您试图构建一组可重用的Color对象,请使greystatic final(static表示它属于整个类Color而不是特定的颜色),并将其称为grey以适应约定。

然后,从您的主要方法来看,您仍然不会看到grey,因为它在另一个范围内。你可以告诉Java在哪里找到它,通过调用它EDOCX1 3。