Java 比较器语法?

Java Comparator syntax?

我对以下代码片段有点困惑:

PriorityQueue<String> pq = new PriorityQueue<>(new Comparator<String>() {
    @Override
    public int compare(String a, String b) {
        return counts.get(b) - counts.get(a);
    }
});

PriorityQueue的构造函数是PriorityQueue​(Comparator<? super E> comparator)Comparator是一个接口。

我的问题:

  1. 上面的代码好像把接口实现和实例化一下子结合起来了,请问是如何实现的?
  2. 如何传递 Comparator 实例本身而不将其分配给变量或名称?

参考: https://sp18.datastructur.es/materials/discussion/examprep05sol.pdf

在这种情况下,Comparator 是一个匿名内部 class 实例。