这似乎是从界面创建一个对象; 它是如何工作的?

sha*_*i27 10 java interface object

interface Int {
    public void show();
}

public class Test {     
    public static void main(String[] args) {
        Int t1 = new Int() {
            public void show() {
                System.out.println("message");
            }
        };

        t1.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

Pop*_*ops 18

您正在定义一个实现接口的匿名类Int,并立即创建一个类型的对象thatAnonymousClassYouJustMade.

  • 这对于事件处理程序(例如使用ActionListener接口的事件处理程序)非常有用. (2认同)

oks*_*ayt 8

这种表示法是简写的

Int t1 = new MyIntClass();

// Plus this class declaration added to class Test
private static class MyIntClass implements Int
    public void show() {
        System.out.println("message");
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,最后您将创建一个具体类的实例,其行为是您内联定义的.

您也可以通过为内联的所有抽象方法提供实现来使用抽象类来完成此操作.