找不到符号方法

时间:2014-11-21 11:40:37

标签: java scope local-variables class-variables

编译后,我得到错误找不到符号 - 方法添加(java.lang.String)。到目前为止,代码的目标只是为ArrayList添加新的味道。我正在使用BlueJ IDE,我知道这是可怕的!

import java.util.ArrayList;

public class IceCream
{
    // stores ice cream flavours.
    private ArrayList<String> flavours;

    /**
     * Constructor for objects of class IceCream
     */
    public IceCream()
    {
        // initialise instance variables
        flavours = new ArrayList<String>();
    }

    /**
     * Method to add a flavour to the list.
     */
    public void newFlavour(String flavours)
    {
        flavours.add(flavours);        
    }
}

2 个答案:

答案 0 :(得分:2)

您将String参数命名为等于属性的名称(flavor),因此编译器会尝试在String类中查找add()方法(该方法不可用)。更改代码如:

public void newFlavour(String flavours)
{
    this.flavours.add(flavours);        
}

或使用不同的名称。

答案 1 :(得分:1)

查看代码:

public void newFlavour(String flavours)
{
    flavours.add(flavours);        
}

参数flavours shadowing是您的字段flavours,因此编译器正在尝试在add中找到String方法,而不是ArrayList }。您可以明确限定它(this.flavours.add(flavours)),但更改参数名称会更好 。毕竟,你没有添加多种口味 - 只有一种......所以你的参数名称应该反映出来:

public void newFlavour(String flavour)
{
    flavours.add(flavour);
}

也可能将方法名称更改为addFlavour