老师,我使用匿名内部类的方式将构造器传入优先队列时,构造器内部调用了函数的局部变量map,在eclipse中将会报错Cannot refer to a non-final variable * inside an inner class defined in a different method.需要在局部变量中加final修饰方可以消除错误,但是不加final修饰在LeetCode中却也可以通过,想请问老师是怎么回事?
PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) {
return map.get(a) - map.get(b);
}
});
还有一个问题,就是我将老师的源码复制到eclipse中,传入构造器那一行也会报错,Cannot infer type arguments for PriorityQueue<>,我检查了一下,我确实是导入了Comparator包,但是编译一直报错,在LeetCode中却也可以通过,我想请问是eclipse的问题吗?还是因为java的版本太低,不支持这种构造? 谢谢老师