返回类型错误。为什么?

时间:2016-02-23 12:59:45

标签: java

Eclipse说

  

此方法(findClientByPetsName)必须返回Client类型的结果。

我不明白为什么以及该做什么。

public class Client{

    private final String name;
    private final Pet pet;

    public Client(String name, Pet pet){
        this.name = name;
        this.pet = pet;
    }

    public String getName(){
        return this.name;
    }

    public Pet getPet(){
        return this.pet;
    }
}


public class Clinic {

    /**
    * This class describes Clinic
    */

    private final Client[] clients;

    public Clinic(final int size){
        this.clients = new Client[size];
    }

    public Client findClientByPetsName (final String petsName){
        for(int i=0; i<clients.length; i++) {
            if (clients[i].getPet().getName() == petsName)
                return clients[i];
        }
    }
}

3 个答案:

答案 0 :(得分:5)

好吧,你的方法必须总是返回一些东西(其类型为> A='>'; if [ -n "$A" ]; then echo "yes"; fi yes > A='>'; if [ -n "$A" -a -n "$A" ]; then echo "yes"; fi bash: [: too many arguments > A='> '; if [ -n "$A" -o -n "$A" ]; then echo "yes"; fi yes > A='>'; if [ -n "$A" -o -n "Hello" ]; then echo "yes"; fi bash: [: too many arguments > A='>'; if [ -n "Hello" -a -n "$A" ]; then echo "yes"; fi yes ),即使永远不执行for循环或if语句总是为false(因为你没有比较{{ 1}}正确 - 使用Client代替String)。

可能的解决方案:

equals

答案 1 :(得分:2)

如果您没有输入if语句,也需要返回一个值。

public Client findClientByPetsName (final String petsName) {
    for (int i = 0; i < clients.length; i++) { 
        if (clients[i].getPet().getName().equals(petsName)) {
             return clients[i];
        }
    }
    return null;
}

此外,因为petsName是一个字符串,我将==替换为.equals。为此,我认为getName方法总是返回一个非空字符串。事实上,运算符==检查两个对象是否相同。相反,方法.equals检查两个对象的内容。

另一种方法是,如果未检索到数据,则抛出Exception。如果不创建新的Exception类型,则可以使用NoSuchElementException

public Client findClientByPetsName (final String petsName) {
    for (int i = 0; i < clients.length; i++) { 
        if (clients[i].getPet().getName().equals(petsName)) {
             return clients[i];
        }
    }
    throw new NoSuchElementException("Pet name: " + petsName + " not found");
}

注意:抛出异常是一种很好的做法,可以从代码检查中删除

if (element != null) {
    // Do something
}

答案 2 :(得分:0)

当声明一个方法返回一个值时。你必须在任何可能来自你实现的逻辑的情况下返回一个值。

如果找不到要返回的有效值,则可以返回null。优选地,在这种情况下,最佳做法是返回Optional对象(以这种方式,您可以阻止代码/ api使用者的NullPointerException。)