爪哇 - 接口,实例化的界面?(Java - Interface, instantiating an

2019-06-23 17:34发布

所以,我刚刚发现这个代码示例网上前一段时间,我再次去了,但相当混乱。

从看着它,我收集(它可能是错误的)是,它传递给在NumberPrinter类打印机对象的打印方法。 然而,该接口也称为打印机,所以我们是不是实例化一个匿名类打印机接口,定义方法,然后通过它?

我的基本问题是,是我最初的假设是正确的? 如果是的话我想你不能实例化的界面?

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);
            }

        });
    }

}

Answer 1:

这就是所谓的匿名内部类

它创建了一个未命名类,它实现了Printer接口。



Answer 2:

你的假设是正确的,你不能实例化一个接口。 但是,您可以实例化一个匿名类,这是什么代码正在做什么。



Answer 3:

您需要NumberPrinter的打印功能的打印机对象。 当你调用该函数你不实际实例的打印机接口,但实例化对它的一个实现,这就是为什么它的工作。

你的假设是通过正确的方式。



文章来源: Java - Interface, instantiating an interface?