我们如何在java中创建接口对象?

2022-09-05 00:23:35

这个代码是如何工作的,我完全困惑....

package com.servletpack.examples;

interface check {
    public void message();
}
public class Interface {
    public static void main(String[] args) {
        try {
            check t = new check() {//how????????????????
                public void message() {
                    System.out.println("Method defined in the interface");
                }
            };
            t.message();
        } catch (Exception ex) {
            System.out.println("" + ex.getMessage());
        }
    }
}

答案 1

使用该语法,您可以创建一个完全合法的匿名类

在内部,匿名类被编译为自己的类,在包含类的名称位于符号之前的位置调用。并为每增加一个匿名类而增加。这意味着正在创建以下类:EnclosingClass$n$n

class Interface$1 implements check {
     public void message() {
         System.out.println("Method defined in the interface");
     }
}

然后,中的代码编译为在内部使用新定义的匿名类:main

check t = new Interface$1();
t.message();

答案 2

它是匿名类。检查类是一个接口。匿名类动态定义给定接口的实现。因此,它使您不必为接口的实现创建单独的类。仅当您知道在代码中的任何其他位置都不需要此实现时,此方法才有用。

希望这个解释有所帮助!