当我在android中运行我的程序时,出现以下例外。比较器的NoSuchMethodError?
private PriorityQueue<Creature> turnqueue = new PriorityQueue<Creature>(new TurnComparator());
FATAL EXCEPTION: GLThread 18092
Process: com.buckriderstudio.clonequest, PID: 10171
java.lang.NoSuchMethodError: No direct method <init>(Ljava/util/Comparator;)V in class Ljava/util/PriorityQueue; or its super classes (declaration of 'java.util.PriorityQueue' appears in /system/framework/core-libart.jar)
这是我比较的样子:
public class TurnComparator implements Comparator<Creature> {
@Override
public int compare(Creature c1, Creature c2) {
if (c1.getNextMove() < c2.getNextMove()) return -1;
if (c1.getNextMove() > c2.getNextMove()) return 1;
else return 0;
}
}
这似乎是某种兼容性问题,但我不知道如何解决这个问题。 Android根本不支持Comparator
还是需要修改它以修复此问题?什么是比较PriorityQueue
的好兼容替代品?
'TurnComparator'的签名是什么?它执行 –