发布在Java中创建新对象并将其传递给setMethod的问题

时间:2012-03-14 22:03:12

标签: java object

我正在尝试使用传入的参数创建一个新对象,然后使用该新对象放置在下面列出的setCarColor方法中。但是我的构造函数中的setCarColor给我的clv变量一个错误。它说“找不到符号”。 clv是CarColor类的变量。我不确定是不是因为传入的参数(rdIn,grnIn,bluIn)是整数还是什么?有人有什么想法吗?

最诚挚的问候,

public abstract class Vehicle 
{
  private String shapeId;
  CarColor carColor;//CarColor data member from the ColorValue.java class


public Shape(String bodyid, int rd, int grn, int ble)
{
 CarColor clv = new CarColor(rdIn, grnIn, bluIn);
 setCarColor(clv(rd, grn, ble));// <---error here
}

private CarColor getCarColor()
{
    return carColor;
}

private void setCarColor(int redIn, int blueIn, int greenIn)
{
if (redIn == 0 || blueIn == 0 || greenIn == 0 )
{
    System.out.println("The value entered in is null.  Please try again ");
    System.exit(-1);
}

}

4 个答案:

答案 0 :(得分:1)

此行几乎罚款:

ColorValue clv = new ColorValue(rdIn, grnIn, bluIn);

...虽然没有填充colorValue字段,这是您可能期望的字段,但实际上并没有rdIn,{ {1}}和grnIn个变量。您的意思是bluInrdgrn? (顺便说一句,如果你没有这样的合同名称,这会有所帮助。)

但这条线在两个方面被打破了:

ble

首先,它试图调用名为setColorValue(clv(rd, grn, ble)); 方法。你没有这样的方法。您有一个名为clv变量,但您没有“调用”变量。

第二个问题是,如果你真的是这个意思:

clv

然后你会使用不正确的参数 - setColorValue(clv); 没有一个setColorValue类型的参数,它有三个参数,所有ColorValue s。

不幸的是,目前还不清楚你尝试做什么,所以很难建议你。 也许你的意思是:

int

答案 1 :(得分:0)

这应该可以解决错误:

public abstract class Geometry 
{
    private String shapeId;
    ColorValue colorValue;//ColorValue data member from the ColorValue.java class


    public Shape(String bodyid, int rd, int grn, int ble)
    {
        shapeId = bodyid;
        setColorValue(rd, grn, ble);
    }

    private ColorValue getColorValue()
    {
        return colorValue;
    }

    private void setColorValue(int redIn, int blueIn, int greenIn)
    {
        if(redIn == 0 || blueIn == 0 || greenIn == 0 )
        {
            System.out.println("The value entered in is null.  Please try again ");
            System.exit(0);
        }
        colorValue = new ColorValue(redIn, greenIn, blueIn);
    }
}

答案 2 :(得分:0)

您声明的setColorValue()方法需要3个int参数,但是您试图通过(可能)传递一个ColorValue对象来调用它,该对象由名为clv的方法创建,该方法不存在。因此,签名不匹配,找不到符号。

答案 3 :(得分:0)

你的setColorValue方法需要3个整数然后你试图将它传递给ColorValue

setColorValue(int redIn, int blueIn, int greenIn)

要使用此方法,您需要执行类似

的操作
public Shape(String bodyid, int rd, int grn, int ble)
{
   setColorValue(rd, grn, ble);
}

或者如果你想传递一个ColorValue对象

public Shape(String bodyid, int rd, int grn, int ble)
{
   ColorValue clv = new ColorValue(rd, grn, ble);
   setColorValue(clv);
}

private void setColorValue(ColorValue clv)
{
    // do stuff
}

或者你可以这样做,它将创建对象,并在一步中将其传递给方法:

public Shape(String bodyid, int rd, int grn, int ble)
{
   setColorValue(new ColorValue(rd, grn, ble));
}

目前你似乎有很多这些的组合。