1

您好,我正在建立一家书店,我收到此错误消息

Duplicate method getApparel(String) in type Bookstore

Apparel 是这些方法中的一个类。我如何解决这个问题。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

4 回答 4

3

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

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

于 2013-04-23T01:57:44.873 回答
0

两种方法 getApparel(String) 具有相同的方法签名!JAVA 和 C++ 禁止具有相同方法签名的多个方法。否则,编译器将无法识别要调用的方法。

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

详细信息可以参考:定义方法

于 2013-04-23T03:39:23.147 回答
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;
}
于 2013-04-23T01:56:59.003 回答
0

两种方法具有相同的参数类型,但返回类型不同,这是不可能的。来自Java 语言规范

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

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

于 2013-04-23T01:59:49.837 回答