方法返回空类

时间:2018-07-27 13:19:31

标签: java class null

我认为这可能是一个设计问题,但是我的方法存在问题,该方法应返回在该方法中传递的特定类。但是,该方法应返回修改后的类,但返回null。

AnimalSummary animalSummary = new AnimalSummary()
for (animal : animals){
    animalSummary = new Zoo().calculateAnimalTypeLegs(animal, animalSummary)
}

这是方法

AnimalSummary calculateAnimalTypeLegs(Animal animal, AnimalSummary animalSummary){

    if (animal.type.equals("Bear")
        animalSummary.setTotalLegs(animalSummary.getTotalLegs()+4)
    if (animal.type.equals("Human")
        animalSummary.setTotalLegs(animalSummary.getTotalLegs()+2)

    return animalSummary
}

在遍历所有元素的同时,第一个类已正确初始化,但是在第一次返回方法和第二个元素之后,class AnimalSummary为空。

第一次调试该方法时,正确初始化了animalSummary类。但是,返回值并在第二次迭代中输入后,animalSummary类为空

2 个答案:

答案 0 :(得分:1)

尝试通过提供的少量代码重新创建问题:

public class Animal {

    public String type;
}

public class Zoo {

    public AnimalSummary calculateAnimalTypeLegs(Animal animal, AnimalSummary animalSummary){

        if (animal.type.equals("Bear"))
            animalSummary.setTotalLegs(animalSummary.getTotalLegs()+4);
        if (animal.type.equals("Human"))
            animalSummary.setTotalLegs(animalSummary.getTotalLegs()+2);

        return animalSummary;
    }
}

public class AnimalSummary {

    public int getTotalLegs() {
        return totalLegs;
    }

    public void setTotalLegs(int totalLegs) {
        this.totalLegs = totalLegs;
    }

    private int totalLegs;
}

public class Main {

    public static void main(String[] args) throws Exception {
        Animal bear = new Animal();
        bear.type = "Bear";

        Animal human = new Animal();
        human.type = "Human";
        List<Animal> animals = Arrays.asList(bear, human);

        AnimalSummary animalSummary = new AnimalSummary();
        for (Animal animal : animals){
            animalSummary = new Zoo().calculateAnimalTypeLegs(animal, animalSummary);
        }

        System.out.println(animalSummary.getTotalLegs()); 
    }
}

输入:熊;人类

结果: 6

如您所见,一切正常,并且animalSummary在任何时候都不为null。您能指出这和您的代码有什么区别吗?

答案 1 :(得分:0)

尝试使用此代码:

List<AnimalSummary> animalSummaryList = new ArrayList<>();
    for (animal : animals){
        AnimalSummary animalSummary = new AnimalSummary();
        animalSummaryList.add(new Zoo().calculateAnimalTypeLegs(animal, animalSummary));
}

,经过所有迭代后,获得结果animalSummaryList并对其进行迭代以得到结果。