java中的方法重载错误

时间:2013-04-23 01:55:50

标签: java overloading

您好我正在构建一个书店,但收到此错误消息

Duplicate method getApparel(String) in type Bookstore

服装是这些方法中的一个类。我怎么解决这个问题。 Eclipse建议重命名这些。

public Apparel getApparel(String id)
{
    for(int i=0; i < apparel.size(); i++)
    {
        if(apparel.get(i).getId().equals(id))
        {
            return apparel.get(i);
        }
    }

    return null;
}

public ArrayList<Apparel> getApparel(String name)
{
    ArrayList<Apparel> apparel = new ArrayList<Apparel>();
    for(int i=0; i < this.apparel.size(); i++)
    {
        if(this.apparel.get(i).getName().equals(name))
        {
            apparel.add(this.apparel.get(i));
        }
    }

    return apparel;
}

4 个答案:

答案 0 :(得分:3)

在Java中,不能在同一个类中使用相同方法名称和相同参数类型和计数的多个方法 - 在此上下文中不考虑不同的返回值。

要解决此问题,您必须重命名其中一个方法,或者添加或更改参数以使它们唯一。

答案 1 :(得分:0)

这样的事情:

public Apparel getApparelById(String id)
{
    for(int i=0; i < apparel.size(); i++)
    {
        if(apparel.get(i).getId().equals(id))
        {
            return apparel.get(i);
        }
    }

    return null;
}

public ArrayList<Apparel> getApparelByName(String name)
{
    ArrayList<Apparel> apparel = new ArrayList<Apparel>();
    for(int i=0; i < this.apparel.size(); i++)
    {
        if(this.apparel.get(i).getName().equals(name))
        {
            apparel.add(this.apparel.get(i));
        }
    }

    return apparel;
}

答案 2 :(得分:0)

两种方法都具有相同的参数类型,但返回类型不同,这是不可能的。来自Java Language Specification

Two methods have the same signature if they have the same name and argument types.

如果两种方法都有不同的参数类型,那么就有可能。

答案 3 :(得分:0)

两个方法getApparel(String)都有相同的方法签名! JAVA和C ++使用相同的方法签名来抛弃多个方法。否则,编译器无法识别要调用的方法。

方法签名由以下方法标识:方法名称+方法参数列表(类型列表)。编译器不按返回类型区分方法。

有关详细信息,请参阅:Defining Method