gpt4 book ai didi

java - 为什么我会出现 stackoverflow?

转载 作者:行者123 更新时间:2023-12-01 18:16:07 29 4
gpt4 key购买 nike

public class SortAnimal
{
public static Comparator<Animal> getAnimalTagComparator()
{
return getAnimalTagComparator();
}

class getAnimalTagComparator implements Comparator<Animal> {

@Override
public int compare(Animal o1, Animal o2) {
return o1.getTag()-o2.getTag();
}
}

我有另一个文件,它生成一个数组并调用:

Comparator<Animal> getAnimalTagComparator = SortAnimal.getAnimalTagComparator();

为什么我在这一行遇到 stackoverflow:return getAnimalTagComparator();

最佳答案

getAnimalTagComparator()递归地无限次调用自身(或至少直到堆栈溢出)。这会导致堆栈溢出。

您应该为类和方法使用不同的名称,并将方法更改为如下所示:

public static Comparator<Animal> getAnimalTagComparator()
{
return new AnimalTagComparator();
}

并将类更改为static class AnimalTagComparator 。 (需要 static 修饰符,因为 AnimalTagComparator 类嵌套在 SortAnimal 类中,如果不将其设为静态,则需要一个 SortAnimal 的封闭实例才能创建 AnimalTagComparator 的实例)。

关于java - 为什么我会出现 stackoverflow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29404824/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com