Java - Интерфейс, создание интерфейса?

Так что я только что нашел этот пример кода в сети некоторое время назад, и я перебираю его снова, но в замешательстве.

Из этого я понял (и это может быть неправильно) то, что он передает методу print в классе NumberPrinter объект Printer. Однако этот интерфейс также называется принтером, поэтому мы не создаем экземпляр анонимного класса интерфейса принтера, определяем методы и затем передаем его?

Мой основной вопрос: верно ли мое первоначальное предположение? А если так, то я думал, что вы не можете создать экземпляр интерфейса?

<code>public class NumberPrinter {

    public interface Printer {
        public void print (int idx);
    }

    public static void print (Printer p) {
        for (int i = 0; i < 4; i++) {
            p.print(i);
        }
    }

    public static void main(String[] args) {
        print(new Printer() {

            @Override
            public void print(int idx) {
                System.out.println(idx);
            }

        });
    }

}
</code>

Ответы на вопрос(3)

Ваш ответ на вопрос