for(int i = 0; i < myList.size(); i++)
{
myEnum = MyEnum.values()[myList.get(i).getMyInteger()];
}
上面的代码给了我一个StackOverflowError,如下所示: java.util.AbstractList $ SubAbstractList.get(AbstractList.java:292)
有什么可能的原因?我无法重现该问题,但已从崩溃报告中看到了堆栈跟踪。
堆栈跟踪是:
java.lang.StackOverflowError
at java.util.AbstractList$SubAbstractList.get(AbstractList.java:292)
at java.util.AbstractList$SubAbstractList.get(AbstractList.java:292)
at java.util.AbstractList$SubAbstractList.get(AbstractList.java:292)
at java.util.AbstractList$SubAbstractList.get(AbstractList.java:292)
at java.util.AbstractList$SubAbstractList.get(AbstractList.java:292)
at java.util.AbstractList$SubAbstractList.get(AbstractList.java:292)
at java.util.AbstractList$SubAbstractList.get(AbstractList.java:292)
at java.util.AbstractList$SubAbstractList.get(AbstractList.java:292)
at java.util.AbstractList$SubAbstractList.get(AbstractList.java:292)
对getter的相同的多次调用,源自设置枚举的行。
此处使用的列表是子列表。
答案 0 :(得分:0)
答案 1 :(得分:0)
我建议增加java堆大小:
-Xms指定初始Java堆大小和 -Xmx最大Java堆大小。
将最小值设置为64Mb,最大值设置为256Mb
java -Xms64m -Xmx256m ...
试试这个,如果它没有重写您的代码以避免递归...
答案 2 :(得分:0)
看起来这是由于我对AbstractList.SubAbstractList(subList)的误解。 subList返回列表的视图,而不是新列表。我是在从同一个完整列表中获得的不同子列表上执行此操作。