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

时间:2013-06-02 06:53:07

标签: java interface

这段代码是如何工作的,我感到很困惑....

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

4 个答案:

答案 0 :(得分:23)

使用该语法,您可以创建anonymous class,这是完全合法的。

在内部,匿名类被编译为自己的类,称为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();

答案 1 :(得分:5)

您正在创建实现接口检查的anonymous class实例(即时)。

答案 2 :(得分:3)

这是匿名课程。您的检查类是一个界面。匿名类动态定义给定接口的实现。因此,它可以帮助您避免为Interface的实现创建单独的类。只有当您知道在代码中的任何其他位置永远不需要此实现时,此方法才有用。

希望这个解释有所帮助!!

答案 3 :(得分:2)

您的接口引用可以包含实现类的对象。您正在实现一个匿名类并将其分配给接口的引用,这在JAVA中绝对合法。